兔子数列又称斐波那契数列、黄金分割数列,它由数学家列昂纳多·斐波那契以兔子繁殖的例子引出,故此得名。兔子繁殖的故事如下:
兔子一般在出生两个月之后就有了繁殖能力,每对兔子每月可以繁殖一对小兔子,假如所有的兔子都不会死,试问一年以后一共有多少对兔子?
本案例通过编写代码,利用递归实现根据月份计算兔子总数量的功能
案例分析
对兔子数列问题进行归纳分析,以n 表示月份:
当n=1,2时,只有1对兔子:
当n=3时,有一对兔子出生,此时有 2对兔子:
当n=4时,n=3时出生的兔子尚不能生育,本月只有一对兔子出生,此时有3 对兔子;
当n=5时,4月之前的两对兔子各生一对兔子,加上4月的3 对兔子,此时共有5对兔子;
当n=6时,5月之前的3对兔子各生一对兔子,加上5月的5对兔子,共有8对兔子;
........
以此类推,第n个月时兔子的数量,等于第 n-1个月时兔子的数量,加上第n-2个月时兔子的数量。以f(n)表示每个月兔子的数量,则满足以下公式:
将 f(n)视为一个关于月份的函数,根据上述公式可知,在求解当月兔子数量时,需要再次借用该函数自身。
def tuzi (month):
if month == 0 or month == 1:
return 1
else:
return tuzi(month-1)+tuzi(month-2)
result = tuzi(12)
print(result)
运行程序,结果如下