顯然使用的遞迴方法解決斐波那契數列問題,效率並不高,運用遞迴方法時間複雜度和空間複雜度是很大的。
接下來我會把我學習到的一種效率較高並且其空間複雜度較小的方法介紹一波:
動態規劃:由底向頂逐步迭代求得斐波那契數列的第n項
傳統的解決方法是運用公式:f(n-1)+ f(n+1);而這種方法是運用g,f 兩個變數分別的的迭代變換,即:
g = g + f ;
f = g - f ;
例:g = 1; f = 0;
1.
g = 1 + 0 = 1;
f = 1 - 0 = 1;
2.
g = 1 + 1 = 2;
f = 2 - 1 = 1;
3.
g = 2 + 1 = 3;
f = 3 - 1 = 2;
依次迭代計算,最後的g就是我們所要求的斐波那契數列第n項
#include
void
fibonacci
(int n)
printf
("斐波那契第%d項是:%d"
,n,g);}
intmain()
這種方法的時間複雜度t(n)= o(n),並且空間複雜度也縮小為o(1)(只有常數項相加)
接下來我還會把我所學寫成部落格分享給大家,希望我們共同學習
動態規劃 斐波那契數列
問 大家都知道斐波那契數列,現在要求輸入乙個整數n,請你輸出斐波那契數列的第n項 從0開始,第0項為0 n 39 斐波那契數列簡單介紹 我的解法 注 從fibonacci n 1 fibonacci n 2 明顯看出使用的是遞迴,此題用遞迴兩三行 即可搞定。但是,若出題者準備著乙個超大的n,那麼很有...
python斐波那契數列動態規劃
斐波那契類似於1 1 2 3 5 8這樣的數列,當前項等於前兩項之和。根據這個規律就可以用遞迴來做,可是當數字很大的時候,遞迴耗時很長,因此可以採用動態規劃來做。動態規劃 deffeibonacci1 n array 0 1 while len array n 1 array 2 return ar...
遞迴 迭代(動態規劃)解決斐波那契數列
大家都知道斐波那契數列,現在要求輸入乙個整數n,請你輸出斐波那契數列的第n項 從0開始,第0項為0,第1項是1 n 39 n leq39 n 39 遞迴,f n f n 1 f n 2 f n f n 1 f n 2 f n f n 1 f n 2 自上而下求解並回溯到根節點,是一顆完全二叉樹,所以...