斐波那契數列,用最快的方法求該數列的第n項

2021-08-14 07:53:05 字數 627 閱讀 7685

題目:定義fibonacci數列如下: 

/ 0 n=0

f(n)  1 n=1

\ f(n-1)+f(n-2) n=2

輸入n,用最快的方法求該數列的第n項。

分析:在很多c語言教科書中講到遞迴函式的時候,都會用fibonacci作為例子。

最快當然是矩陣快速冪了

*   =     

1,0 

不懂矩陣快速冪可以先看指數快速冪

#pragma warning(disable:4996)

#include #include #include #include using namespace std;

#define n 1005

int ans = ;

int matrix[2] = ;

void calmatrix()

} }}void solve(int n)

else

; ans[0] = ans[1] = 0;

for(int i = 0; i < 2; i++)

}calmatrix();

} n /= 2; }}

int main()

}

求斐波那契數列的方法

什麼是斐波那契數列,1,1,2,3,5,8,13.這樣乙個數列就是斐波那契數列,求第n項的值。觀察數列可得,除了第一項和第二項,所有的數列的值都是前一項和前一項的前一項的加和,轉換成函式也就是f n f n 1 f n 2 我們可以按照順序,求出每個值,步驟如下 1.f 0 0 f 1 1 f 2 ...

求斐波那契數列

一 用陣列求取斐波那契數列第n項的數值 非遞迴 斐波那契數列求取思想 第n項 第n 1項 第n 2項 function getvalue n var j 0 while j n 1 return arr j else alert getvalue 8 求第八項的值 二 使用遞迴求取第n項的值 fun...

用遞迴求斐波那契數

斐波那契數是第乙個數和第二個數都為1,從第三個數開始,後面的是是前面相鄰兩個數的和。定義的函式如下所示 int fib int m if語句為了確定第一位和第二位都為1,完整的 如下所示 include include int fib int m int main printf n printf n...