求Fibonacci數列的三種方法

2021-08-20 09:32:12 字數 1165 閱讀 6511

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 ...