Python 斐波那契數列之兔子問題

2021-10-05 01:55:59 字數 1903 閱讀 1292

目錄

兔子問題

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...