fibonacci數列:0,1,1,2,3,5,8,13。。。。
第一招:遞推法;
#includeint f[47];
int main()
第二招:不斷變換初始;
#include int main()
if(n==1||n==2) puts("1");
else if(n==0) puts("0");
else printf("%d\n",f3);
}return 0;
}
第三招:快速冪;
description
設fibonacci數列定義為:
請用矩陣快速冪方法,即利用以下公式求fibonacci數列第n項。
本題不涉及高精度數。
input
每行乙個整數 i ,表示fibonacci數列的第i項。 i < 47
output
對每個整數i,輸出fibonacci數列的第i項。
sample input13
20sample output
1
26765
#includeint f[2][2];
int main()
,}; int f0[2][2]=};//自遍歷找出初始
//int f[2][2];
while(n>0)
n>>=1;//除以2;
//更新
f[0][0]=f1[0][0]*f1[0][0]+f1[0][1]*f1[1][0];
f[0][1]=f1[0][0]*f1[0][1]+f1[0][1]*f1[1][1];
f[1][0]=f1[1][0]*f1[0][0]+f1[1][1]*f1[1][0];
f[1][1]=f1[1][0]*f1[0][1]+f1[1][1]*f1[1][1];
f1[0][0]=f[0][0];
f1[0][1]=f[0][1];
f1[1][0]=f[1][0];
f1[1][1]=f[1][1];
}printf("%d\n",f0[1][1]);
}return 0;
}
Fibonacci數列三種方式求解及其複雜度分析
目錄 一 遞迴求解 複雜度分析 解法缺點 二 解決重複計算方式 思路 時間複雜度 三 利用數學公式o logn 解法 o n 解法 o logn 解法 public static int fibonacci int x 設f n 為引數為n時的時間複雜度,很明顯 f n f n 1 f n 2 這就...
Swift學習 求Fibonacci數列
參考自 題目 定義 fibonacci 數列如下 看到斐波那契數列幾乎所有的程式設計師在第一時間的反應都是 遞迴 沒錯了,作為和漢諾塔一樣的經典遞迴問題,我們幾乎毫不猶豫就可以寫出如下的 func fibonacci 1 index int int else if index 1 else 分析2 ...
C語言求Fibonacci數列
方法一 普通法 include include unsigned long fibonacci unsigned n 列印fibonacci intmain void printf athank you for you using.return exit success unsigned long ...