DAY 007--🐰生🐰问题

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                                                        

原文地址:https://www.cnblogs.com/JunSheep/p/8743083.html