1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > 【Python】斐波那契数列之兔子问题

【Python】斐波那契数列之兔子问题

时间:2023-05-20 10:15:14

相关推荐

【Python】斐波那契数列之兔子问题

目录

兔子问题

1.1.问题描述

1.2.问题分析

1.3.解决实现

兔子问题

1.1.问题描述

斐波那契在计算之书中,提出了一个有趣的兔子问题:

若一对成年兔子每个月恰好生下一对小兔子,一雌一雄,在年初时只有一对小兔子,在第一个月结束时,他们成长为成年兔子,并且第二个月结束时,这对成年兔子将生下一对小兔子,这种成长与繁殖的过程会一直持续下去,并假设生下的小兔子不会死,那么一年之后共可有多少对兔子?

1.2.问题分析

第一个月 1对幼兔

第二个月 1对成兔

第三个月 1对成兔--->1对幼兔

第四个月 1对成兔--->1对幼兔

1对成兔

第五个月 1对成兔--->1对幼兔

1对成兔---->1对幼兔

1对成兔

第六个月 1对成兔---->1对幼兔

1对成兔---->1对幼兔

1对成兔---->1对幼兔

1对成兔

1对成兔

我们可以发现,这形成了一个序列:1,1,2,3,5,8,13,21……

然后现在我们把每个月都可以列出来:

可以得出结论,一年后有144只兔子

我们把这种:f(n)=f(n-1)+f(n-2) 称为斐波那契数列

我们可以把最后两位数取出来:89/144 55/89 34/55 …… 得出的结果都约等于0.618=黄金分割比,所以斐波那契数列又称为黄金分割数列

1.3.解决实现

使用递归函数方法解决:

def fibo(n):if n == 0:return 0if n == 1:return 1return fibo(n-1)+fibo(n-2)#使用for循环打印出1-12月有多少对兔子for i in range(1,13):print('第{}个月,有{}对兔子'.format(i,fibo(i))) #format格式化字符串的方法>>>第1个月,有1对兔子第2个月,有1对兔子第3个月,有2对兔子第4个月,有3对兔子第5个月,有5对兔子第6个月,有8对兔子第7个月,有13对兔子第8个月,有21对兔子第9个月,有34对兔子第10个月,有55对兔子第11个月,有89对兔子第12个月,有144对兔子

使用while循环放在一个列表里:(不使用递归)

def fibo(n):global fibo_listfibo_list=[0,1]i=2while i<=n:fibo_list.append(0) #先增加一个元素,不然下一句代码会提示下标越界fibo_list[i]=fibo_list[i-1]+fibo_list[i-2]i+=1return fibo_listprint(fibo(12))>>>[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144]

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。