首页 / PYTHON / python学习递归
python学习递归
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python学习递归,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1875字,纯文字阅读大概需要3分钟。
内容图文
递归 函数调用自身,且有终止条件
python默认递归层数为100
可以修改层数
import sys
sys.setrecursionlimit(1000)
递归求阶乘
------------1迭代
def factorial(n):
result = n
for i in range(1, n)
result *= i
return result
number = int(input('请输入一个整数'))
result = factorial(number)
print('%d 的阶层是%d' % (number, result))
-------------2递归
def factorial(n):
if n == 1:
return 1
else:
return n * factorial(n-1)
number = int(input('请输入一个整数'))
result = factorial(number)
print('%d 的阶层是%d' % (number, result))
递归有危险性,因为有栈操作,消耗内存,所以一定要传出去,归回值
斐波那契数列
F(n)=F(n-1)+F(n-2) F(1)=1 F(2)=1
----------1迭代
def factorial(n):
a = 1
b = 1
if n>=1:
print('1 --> 1\n')
if n>=2:
print('2 --> 1\n')
if n>=3:
for i in range(1, n-1):
c = a + b
print('%d --> %d\n'%(i+2, c))
a = b
b = c
return c
else:
return 1
number = int(input('输入一个数:'))
result = factorial(number)
print('%d 的斐波那契数是 %d'%(number, result))
--------------2递归
def fab(n):
if n <1:
print('输入有误')
return -1
if n == 1 or n == 2:
return 1
else:
return fab(n-1) + fab(n-2)
number = int(input('输入一个数:'))
result = fab(number)
if result != -1:
print('%d 的斐波那契数是 %d'%(number, result))
递归很好写,但很费内存,比如35以上就需要一段时间才能计算出来
汉诺塔游戏算法
def hanoi(n, x, y, z):
if n ==1:
print(x, '-->', z)
else:
hanoi(n-1, x, z, y)# 将前n-1个盘子从x移动到y上
print(x, '-->', z)# 将最底下盘子从x移动到z上
hanoi(n-1, y, x, z)# 将y上的n-1个盘子移动到z上
n = int(input('输入汉诺塔层数:'))
hanoi(n, 'X', 'Y', 'Z')
内容总结
以上是互联网集市为您收集整理的python学习递归全部内容,希望文章能够帮你解决python学习递归所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。