C語言 關於斐波那契數的求法

2021-07-15 14:45:23 字數 557 閱讀 7893

斐波那契數,亦稱之為斐波那契數列(義大利語: successione di fibonacci),又稱**分割數列、費波那西數列、費波拿契數、費氏數列,指的是這樣乙個數列:1、1、2、3、5、8、13、21、……在數學上,斐波那契數列以如下被以遞迴的方法定義:f0=0,f1=1,fn=fn-1+fn-2(n>=2,n∈n*)。用文字來說,就是斐波那契數列列由 0 和 1 開始,之後的斐波那契數列係數就由之前的兩數相加。

思路:第一種是利用遞迴。

int fib(int n)   //求第n個斐波那契數

第二種是利用迭代。

int fib(int n)

return f2;

}}

兩種演算法相比,遞迴的**量小而且容易看懂,但是存在的弊端是當n較大時,遞迴所用的時間遠遠大於迭代執行出來所用的時間,而且它的冗餘計算的數量也增長的非常快。比如在計算fib(10)時,fib(3)被計算了21次。當你在計算ib(30)時,fib(3)被計算了317 811次。所以在使用遞迴時就要考慮到,遞迴帶來的好處是否抵得上它的代價。

斐波那契數列求法

矩陣快速冪 模擬過程 眾所周知 斐波那契數列的定義是f n 1 f n f n 1 我們有兩種方式來實現 乙個是遞迴,乙個是動態規劃 int dfs int n int dfs03 int n return vec 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 ...