目錄
兔子問題
1.1.問題描述
1.2.問題分析
1.3.解決實現
斐波那契在計算之書中,提出了乙個有趣的兔子問題:
若一對成年兔子每個月恰好生下一對小兔子,一雌一雄,在年初時只有一對小兔子,在第乙個月結束時,他們成長為成年兔子,並且第二個月結束時,這對成年兔子將生下一對小兔子,這種成長與繁殖的過程會一直持續下去,並假設生下的小兔子不會死,那麼一年之後共可有多少對兔子?
第乙個月 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……
然後現在我們把每個月都可以列出來:月份1
2345
6789
1011
12隻數
1
1
2
3
5
8
13
21
34
55
89
144
可以得出結論,一年後有144只兔子
我們把這種:f(n)=f(n-1)+f(n-2) 稱為斐波那契數列
我們可以把最後兩位數取出來:89/144 55/89 34/55 …… 得出的結果都約等於0.618=**分割比,所以斐波那契數列又稱為**分割數列
使用遞迴函式方法解決:
def fibo(n):
if n == 0:
return 0
if n == 1:
return 1
return 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_list
fibo_list=[0,1]
i=2while i<=n:
fibo_list[i]=fibo_list[i-1]+fibo_list[i-2]
i+=1
return fibo_list
print(fibo(12))
>>>[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144]
斐波那契數列 斐波那契數列python實現
斐波那契數列 fibonacci sequence 又稱 分割數列 因數學家列昂納多 斐波那契 leonardoda fibonacci 以兔子繁殖為例子而引入,故又稱為 兔子數列 指的是這樣乙個數列 1 1 2 3 5 8 13 21 34 在數學上,斐波納契數列以如下被以遞推的方法定義 f 1 ...
兔子生兔子問題 斐波那契數列
題目 有一對兔子,從出生後第3個月起每個月都生一對兔子,小兔子長到第三個月後每個月又生一對兔子。假如兔子都不死,要求輸出一年內兔子的數量是多少。1 1 2 3 5 8 如下 兔子問題 斐波那契 public class homework05 static intfab int month stati...
java兔子問題(斐波那契數列)
題目 古典問題 有一對兔子,從出生後第3個月起每個月都生一對兔子,小兔子長到第三個月後每個月又生一對兔子 假如兔子都不死,問每個月的兔子總數為多少?斐波那契數列,沒乙個值都等於前兩個值之和 author gkf46762 public class rabbit public static int g...