求第n項斐波那契數的幾種方法

2021-08-24 20:41:45 字數 661 閱讀 5266

以前我們用遞迴的方法這樣來求第n個斐波那契數

int fib(int n)

但是這個演算法的效率太低,原因如下:

裡面有太多的重複計算,時間複雜度過高,導致演算法效率低下。

這算是一種較為優化的演算法

long

long fib(long

long first, long

long second, int n)//first和second表示第一項和第二項

寫成非遞迴:

#include 

#include

long

long fib(int n)

return ret;

}int main()

{ int n = 0;

printf("請輸入n:\n");

scanf_s("%d", &n);

printf("%lld\n", fib(n));

system("pause");

return

0;

求第n個斐波那契數

斐波那契數指 1 1 2 3 5 8 13 21.前兩個數是1 1,從第3個數開始該數等於前兩個數之和。1.用遞迴的方法求第n個斐波那契數 但我們發現有問題,當就算第45個斐波那契數時,特別耗費時間,許久沒有結果。這是為什麼呢?我們發現fib函式在呼叫過程中有很多重複的計算,如當計算fib 35 時...

數論 求斐波那契的第N項

可能學過程式語言的同學們都一定接觸過斐波那契數列。求斐波那契數列的方法也有很多,有效率高低及空間開銷高低之分 本篇部落格將對斐波那契數列進行乙個分析,分析每一種演算法的效率及空間開銷 遞迴實現 此處不考慮爆int,單純的將其實現,下同 include using namespace std int ...

求斐波那契數列的第n項

斐波那契數列的定義如下 f 0 0 f 1 1 f n f n 1 f n 2 n 2 1,1,2,3,5,8,13,21,34,55,89,144,233,377,給出n,求f n 由於結果很大,輸出f n 1000000009的結果即可。input 輸入1個數n 1 n 10 18 output...