求斐波那契數列的第n個數;1,1,2,3,5,8,13,21.....
阿新 • • 發佈:2019-02-16
遞迴方法:
#include<stdio.h> #include<stdlib.h> int Fibonacci_sequence(int n) { if (n == 1 || n == 2) // 遞迴結束的條件,求前兩項 return 1; else { return Fibonacci_sequence(n - 1) + Fibonacci_sequence(n - 2); // 如果是求其它項,先要求出它前面兩項,然後做和。 } } int main() { int i = 0; int n = 8; printf("Please enter a number:"); scanf("%d", &n); i=Fibonacci_sequence(n); printf("The number is %d\n", i); system("pause"); return 0; }
#include<stdio.h> #include<stdlib.h> void Fei(int n) // 非遞迴 { int sum = 1; int sum1 = 1; int i = 0; int tem = 0; if (n < 1) { printf("輸入數字有誤\n"); } else if (1 == n) { printf("第n個斐波那契數是:%d\n", sum); } else if(2 == n) { printf("第n個斐波那契數是:%d\n", sum); } else { for (i = 0; i < n - 2; i++) // 第三項等於前兩相加 { tem = sum; // tem 儲存原來的sum sum += sum1; // sum= 前兩項相加 sum1 = tem; // sum1 =原來的sum 始終保證第三項等於前兩項相加 } printf("第n個斐波那契數是:%d\n", sum); } } int main() { int n = 0; printf("Please enter a number :"); scanf("%d",&n); Fei(n); system("pause"); return 0; }