非递归和递归分别实现求第n个斐波那契数。
Posted The Ocean
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了非递归和递归分别实现求第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 }
以上是关于非递归和递归分别实现求第n个斐波那契数。的主要内容,如果未能解决你的问题,请参考以下文章