Python 遞迴函式實現斐波那契數列

2021-10-10 18:19:53 字數 1567 閱讀 5953

1、什麼是斐波那契數列?

斐波那契數列(fibonacci sequence),又稱**分割數列、因數學家萊昂納多·斐波那契(leonardoda fibonacci)以兔子繁殖為例子而引入,故又稱為「兔子數列」,指的是這樣乙個數列:0、1、1、2、3、5、8、13、21、34、……

斐波那契數列由 0 和 1 開始,之後的斐波那契數列係數由之前的兩數相加得出

2、斐波那契的神奇之處

也許你覺得,這麼一串數有什麼用,我平常也用不到,但實際上,很多地方都有斐波那契數列的影子。

比如,我開篇提到的「兔子數列」。假設一開始有兩隻兔子,一公一母,兩個月後開始繁殖,一對兔子每個月能且只能生出一對小兔子來,假設兔子都不會死亡,那麼一年之後可以繁殖多少對兔子?

分析:第乙個月和第二個月,兔子沒有繁殖能力,所以是一對;

第三個月,兔子有了繁殖能力,生下了一對小兔子,現在兔子是兩對;

第四個月,大兔子依舊可以生下一對小兔子,由於現在小兔子還未成年,沒有繁殖能力,所以,現在兔子是三對;

四個月後,小兔子長大了成為了小老兔子,可以和大老兔子一起繁殖,這時候就擁有了五對兔子;

……以此類推我就得到了這樣一串數:

1,1,2,3,5,8,13,21…

[(1+√5)/2]^n /√5 - [(1-√5)/2]^n /√5 【√5表示根號5】

1÷1=1,1÷2=0.5,2÷3=0.666…,3÷5=0.6,5÷8=0.625,55÷89=0.617977……

144÷233=0.618025…46368÷75025=0.6180339886……

當而且當n趨向於無窮大時,前一項與後一項的比值越來越逼近**分割0.618

**:

def

fibo

(n):

"""遞迴函式實現斐波那契數列"""

if n ==

1or n ==2:

return

1else

:return fibo(n-1)

+ fibo(n -2)

if __name__ ==

'__main__'

: n =

int(

input

("請輸入數列的項數:"))

res = fibo(n)

print

(res)

執行結果:

請輸入數列的項數:9

34

n =

int(

input

("請輸入數列的項數:"))

fibo =

[x[0

]for x in

[(a[i][0

][a[i][1

], a[i][0

]+a[i][1

]]))

for a in([

[1,1

]],)

for i in

range

(n)]

]print

(fibo)

python 遞迴 斐波那契

什麼是遞迴演算法?函式自己呼叫自己本身 本質上return返回的時候,總是把乙個引數傳入到自己函式本身,讓函式反覆呼叫下去 遞迴有何特點?必有乙個結束條件 沒有結束條件,遞迴就沒有任何意義,python中預設只能999層遞迴 遞迴過多棧溢位,報錯 效率不高 相對而言,對於正向遞迴,遞迴次數和迴圈次數...

遞迴實現斐波那契數列

斐波那契數列 f 1 1,f 2 1,f n f n 1 f n 2 n 3,n n package com.algorithm.tiger.recursion 遞迴和非遞迴方法實現斐波那契數列 斐波那契數列 f 1 1,f 2 1,f n f n 1 f n 2 n 3,n n descripti...

斐波那契數列遞迴實現

什麼是fibnacci數列?斐波那契數列 fibonacci sequence 又稱 分割數列 因數學家萊昂納多 斐波那契 leonardoda fibonacci 以兔子繁殖為例子而引入,故又稱為 兔子數列 指的是這樣乙個數列 0 1 1 2 3 5 8 13 21 34 在數學上與 分割的關係 ...