非递归和递归分别实现求第n个斐波那契数。

菲波那切数列为: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 }

猜你喜欢

转载自www.cnblogs.com/cuckoo-/p/10317627.html