非遞歸和遞歸分別實現求第n個斐波那契數。
阿新 • • 發佈:2019-01-25
都是 一個 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個斐波那契數。