斐波那契數的實現(Java)

2021-08-17 14:21:55 字數 526 閱讀 7062

首先我們要知道斐波那契說的表示式即:

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 可是對於這題來說。上面的 還是不行的...