[python]兔子问题,斐波那契数列 递归&非递归
假设一对幼年兔子需要一个月长成成年兔子,一对成年兔子一个月后每个月都可以繁衍出一对新的幼年兔子(即兔子诞生两个月后开始繁殖)。不考虑死亡的情况,问第 N 个月时共有多少对兔子?
结果前几个月的兔子数量为:1,1,2,3,5,8,13,21,34.......
发现规律:从第三个月开始,每个月的兔子数量为上个月与上上个月的兔子数量之和。
非递归:
#p6_7.py#兔子问题
def fab(n):
a1=1
a2=1
a3=1
if n<1:
print(\'输入有误\')
return -1
while(n-2)>0:
a3=a1+a2
a1=a2
a2=a3
n-=1
return a3
#m=int(input(\'请输入整数\'))
result=fab(35)
if result!=-1:
print(\'总共有%d对小兔崽子诞生\'%result)
递归解法:
#p6_8.py#递归兔子问题
def fab(n):
if n<0:
print(\'输入有误\')
return -1
if n==1 or n==2:
return 1
else:
return fab(n-1)+fab(n-2)
result=fab(35)
if result!=-1:
print(\'共有%d对小兔崽子诞生\'%result)
以上是 [python]兔子问题,斐波那契数列 递归&非递归 的全部内容, 来源链接: utcz.com/z/388689.html