[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)