练习十一:兔子数量计算—斐波那契实例

题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,
假如兔子都不死,问每个月的兔子总数为多少?
通过数学分析我们知道,兔子的规律为数列1,1,2,3,5,8,13,21....,看到规律了吗,我们熟悉的斐波那契数列。话不多说,上代码。

方法一:使用递归

  1 def Fibonacci(n):
  2     if n == 1:
  3         return 1
  4     elif n == 2:
  5         return 1
  6     elif n > 2:
  7         return Fibonacci(n-1) + Fibonacci(n-2)
  8 
  9 sum = 0  #定义初始值
 10 for i in range(1,6): #计算五个月兔子,注意下:这里range中参数从1开始,从0开始话将报错
 11     fibonacci = Fibonacci(i)  #计算每个月兔子总数
 12     sum += fibonacci  #计算5个月后兔子总共多少对
 13     print("第{}月的兔子为{}".format(i,fibonacci))
 14 print("5个月后兔子总数为{}".format(sum))
结果:
第1月的兔子为1
第2月的兔子为1
第3月的兔子为2
第4月的兔子为3
第5月的兔子为5
5个月后兔子总数为12
方法二:使用迭代器
  1 def Fibonacci(n):
  2     t,a1,a2 = 1,1,1
  3     while t <= n:
  4         yield a1  #使用生成器
  5         a1,a2 = a2,a1+a2
  6         t += 1
  7 
  8 fibonacci = Fibonacci(5)
  9 for i in fibonacci:    #注意:也就是说将函数中的打印语句 换成 yield 语句, 以迭代器的形式来完成
 10     print(i)
 11 
结果:
1
1
2
3
5
posted @ 2018-11-06 14:22  阳光宝贝-沐沐  阅读(928)  评论(0编辑  收藏  举报