007 问题:
简述:话说有一对可爱的兔子,出生后的第三个月开始,每一月都会生一对小兔子。
当小兔子长到第三个月后,也会每个月再生一对小小兔子.
问题:假设条件,兔子都不死的情况下,问每个月的兔子总数为多少?
流程分析:
由题意:
第1月:1对
第2月:1对
第3月:1对+新生的1对=2对
第4月:第三个月的兔子+第四个月的兔子出生后周期大于等于3个月的对数(第二个月的兔子总数)=3对
第5月:第四个月的兔子+第三个月兔子新生的对数=3+2=5对
......
得出规律:每个月兔子的对数为:[1,1,2,3,5,8,......]
从第三个数字开始,每个数字都是前两个数字之和。和之前学的斐波那契函数计算方法一致。
- 1、设定起始值:a,b=0,1 2、月份循环迭代计算每个月有多少只兔子,(因为每个月的兔子数取决于上一个月和上上个月的兔子数量)
- for i in month ,对于每一次的i:a,b重新赋值:a,b=b,a+b
- 3、打印出每个月有多少只兔子
代码分析:
def fib(month): a, b = 0, 1 for i in range(1, month+1): print('第%s个月:%s只兔子' % (i,b)) a, b = b, a+b fib(10) #输出结果 第1个月:1只兔子 第2个月:1只兔子 第3个月:2只兔子 第4个月:3只兔子 第5个月:5只兔子 第6个月:8只兔子 第7个月:13只兔子 第8个月:21只兔子 第9个月:34只兔子 第10个月:55只兔子
题目反思:
1、本题最大的难点是如何将每个月的兔子数的规律找出来
2、找到规律后,运用重新赋值的方法,但是需要注意,赋值必须在一次一次的循环中赋值,否则赋值没有意义
新学知识点:
1、初步认识斐波那契函数和斐波那契函数的应用
Mark on 2018.04.13