题目:古典问题:有一对兔子,从出生后第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

最新文章

  1. angular2 service component
  2. Chrome插件概览(一) – The basics
  3. HD2767Proving Equivalences(有向图强连通分量+缩点)
  4. IOS添加手势识别
  5. QML学习笔记之二
  6. Codeforces Round #116 (Div. 2, ACM-ICPC Rules) E. Cubes (尺取)
  7. android下调试unity3d应用
  8. Android JSON,Gson,fastjson实现比较
  9. ASP无惧上传类不能上传中文双引号文件及ASP函数InStr存在bug
  10. web中通过注释判断浏览器&lt;!--[if !IE]&gt;&lt;!--[if IE]&gt;&lt;!--[if lt IE 6]&gt;&lt;!--[if gte IE 6]&gt;版本
  11. 【转】Git代码行统计命令集
  12. 完美解决ubuntu Desktop 16.04 中文版firefox在非root用户不能正常启动的问题
  13. 移动端web自适应适配布局解决方案
  14. Ehcache 3.7文档—基础篇—JCache aka JSR-107
  15. ios之好用的Reachability
  16. MongoDB $关键字 关系比较符号 $lt $lte $gt $gte $ne
  17. git bash的安装与配置
  18. [UE4]删除动画:Remove from frame 5 to frame 18
  19. spring3 hibernate4整合后无法查询数据库
  20. WebAPI POST GET

热门文章

  1. js字符串API
  2. Java常见设计模式之单例模式
  3. Java中Redis入门(1)
  4. Oracle中生成UUID
  5. IIS及时回收
  6. python 基础 列表 小例子
  7. shell入门-awk-2
  8. Arcane Numbers 1
  9. jquery提供的数据提交方式2-ajax
  10. Java数组转置