題目:定義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...