1. 程式人生 > >非遞歸和遞歸分別實現求第n個斐波那契數。

非遞歸和遞歸分別實現求第n個斐波那契數。

都是 一個 urn nbsp 非遞歸算法 stdio.h include i++ ren

菲波那切數列為:0 1 1 2 3 5 8 13 21 34...

規律:從第三個數字起後面的每一個數字都是前兩個數字的和。

非遞歸算法:

 1 #include<stdio.h>
 2 int main()
 3 {
 4           //數列:0 1 1 2 3 5 8 13 21 34
 5     //序號:1 2 3 4 5 6 7 8  9  10
 6     int a = 0;
 7     int b = 1;
 8     int c = a + b;
 9     int num = 0;//num為所求的第幾項數列。
10     scanf("%d", &num);
11 if (num > 1) 12 { 13 for (int i = 0;i < num - 3;i++) { 14 a = b; 15 b = c; 16 c = a + b; 17 } 18 printf("%d", c); 19 20 } 21 else 22 { 23 printf("%d",a); 24 } 25 26 renturn 0; 27 }


遞歸算法:

 1 #include<stdio.h>
 2 //0 1 1 2 3 5 8 13 21 34
 3 //1 2 3 4 5 6 7  8  9 10
 4 int Num(int n)
 5 {
 6     if (n == 1)
 7     {
 8         return 0;
 9     }
10     if (n == 2)
11     {
12         return 1;
13     }
14     else
15     {
16         return Num(n - 1) + Num(n - 2);
17     }
18 }
19 
20 int
main() 21 { 22 int n; 23 scanf("%d",&n);//輸入想要求得的第幾個斐波那契數列 24 int num = Num(n); 25 printf("%d",num); 26 27 return 0; 28 }

非遞歸和遞歸分別實現求第n個斐波那契數。