裴波那契(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...