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