首先我們要知道斐波那契說的表示式即:
fib(i)=1 (i=1或i=2);
fib(i)=fib(i-1) + fib(i-2) (i > 2)
所以它的遞迴**是
//遞迴方式實現斐波那契數
public static long rec_fib(long i)
return result;
}
但是遞迴演算法會增加整個過程的複雜度,例如我要求fib(7)的時候要算fib(6)+fib(5),而fib(6)=fib(5)+fib(4),此時計算機只會非常愚蠢的再算一次fib(5),從而增加了整體的複雜度,所以解決辦法是建立乙個陣列將每次前面算出來的fib(i)進行儲存,以免以後造成重複的運算,此時的**如下:
//動態規劃實現斐波那契數
public static long dp_fib(long i)
return arr[(int)(i-1)];
} }
斐波那契數
入門訓練 fibonacci數列 時間限制 1.0s 記憶體限制 256.0mb 問題描述 fibonacci數列的遞推公式為 fn fn 1 fn 2,其中f1 f2 1。當n比較大時,fn也非常大,現在我們想知道,fn除以10007的餘數是多少。輸入格式 輸入包含乙個整數n。輸出格式 輸出一行,...
斐波那契數
斐波那契數列 fibonacci sequence 簡介 斐波那契數列 fibonacci sequence 又稱 分割 數列 因 數學家列昂納多 斐波那契 leonardoda fibonacci 以兔子繁殖為例子而引入,故又稱為 兔子數列 指的是這樣乙個數列 1 1 2 3 5 8 13 21 ...
斐波那契數
遞迴演算法是不可取的。由於效率非常低,並且還有棧溢位的風險。應該使用例如以下的迭代解法 int fibonacci unsigned int n if n 1 int i 0,j 1,m unsigned int k for k 2 k n k return m 可是對於這題來說。上面的 還是不行的...