[python]兔子问题,斐波那契数列 递归&非递归

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

回到顶部