首页 > 其他 > 详细

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

时间:2019-01-25 00:59:44      阅读:201      评论:0      收藏:0      [点我收藏+]

菲波那切数列为: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个斐波那契数。

原文:https://www.cnblogs.com/cuckoo-/p/10317627.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!