裴波那契數列(迴圈實現遞迴)

2021-07-22 03:34:23 字數 576 閱讀 6769

裴波那契(fibonacci)數列

f(n)=⎧⎩

⎨0,1

,f(n

−1)+

f(n−

2),n

=0n=1n

>1

求裴波那契數列的第n項。(題目來自劍指offer)

1.遞迴解法,效率很低的解法,不用

一看到這個題,我們就很容易竊喜的想到這種解法

很多f(i)進行了重複計算,隨著n的增大,計算量急劇增加,時間複雜度以n的指數方式遞增,存在很嚴重的效率問題。

int fibonacci(int n)
2.用迴圈實現遞迴,面試官期待的解法(o(n))

方法1中的遞迴**之所以慢是因為重複計算的太多,我們只要想辦法避免重複就行了。可以把已經得到的數列中間項儲存起來,如果下次需要的時候先查詢一下,如果前面已經計算過了就不用再重複計算了。

int fibonacci(int n) 

return fib;

}

3.將求裴波那契數列轉換成矩陣的乘方

有創意,但**複雜,不實用

裴波那契數列

裴波那契 fibonacci leonardo,約1170 1250 是義大利著名數學家 在他的著作 算盤書 中許多有趣的問題,最富成功的問題是著名的 兔子繁殖問題 如果每對兔子每月繁殖一對子兔,而子兔在出生後第二個月就有生殖能力,試問一對兔子一年能繁殖多少對兔子?可以這樣思考 第乙個月後即第二個月...

裴波那契數列

def fib max num n,a,b 0,0,1 while n max num print b 列印出來的就是裴波那契數列,從第三項開始,每一項都等於前兩項之和 a,b b,a b n n 1 return done fib 7 0,0,1 第一次沒迴圈時預設值n 0,a 0,b 1 1,1...

裴波那契數列及其遞迴演算法

裴波那契數列起源於兔子數列,假設第乙個月有一對剛出生的兔子,第二個月兔子進入成熟期,我三個月開始生育小兔子,而一對成熟的兔子會在每月生育一對小兔子,兔子永遠不會死去。n月後會有多少只兔子 每月的兔子數為 1,1,2,3,5,8,13,21,34.該數列成為裴波那契數列。最簡單的遞迴為 f int n...