斐波拉契數列求解
阿新 • • 發佈:2018-12-11
定義
無窮數列1,1,2,3,5,8,13,21,34,55,,,,,,,稱為斐波拉契數列。
將其遞迴定義如下圖所示:
將其非遞迴定義如下所示:
實現
採用遞迴方式程式碼如下:
#include <stdio.h> int fibonacci(int n) { if(n <= 1) return 1; return fibonacci(n - 1) + fibonacci(n - 2); } int main() { int n; while(scanf("%d",&n) == 1) { printf("%d\n",fibonacci(n)); } return 0; }
採用非遞迴方式程式碼如下:
#include <stdio.h> int fibonacci(int n){ int fibn_1 = 1, fibn_2 = 1, fibn; //fibn_1表示 fibonacci(n-1), fibn_2表示 fibonacci(n-2) if(n <= 1) return 1; for(int i = 2; i <= n; i++) { fibn = fibn_1 + fibn_2; fibn_1 = fibn_2; //更新 fibn_1 fibn_2 = fibn; //更新 fibn_2 } return fibn; } int main() { int n; while(scanf("%d",&n) == 1) { printf("%d\n",fibonacci(n)); } return 0; }
如有不當,歡迎指出!!!!!