斐波那契数列
Posted Jack Chao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了斐波那契数列相关的知识,希望对你有一定的参考价值。
斐波那契数列
最近在想斐波那契数列的方法。因为在网上接触过递归的思想,所以有了第一个代码。
#include<stdio.h>
int f(int i )
if(i <= 2)
return 1;
else
return f(i - 1) + f(i - 2);
int main()
int n = 0;
scanf("%d" , &n);
int i = 0;
for(i = 1;i<=n;i++)
printf("%d " , f(i));
return 0;
这边的递归思想,大家可以在自定义函数当中看到。
之后我想到,能不能用循环的思想去解决这个问题。
所以有了第二个版本的代码。
#include<stdio.h>
int main()
int i = 0;
int a = 0;
int m = 1;
int n = 1;
int sum = 0;
int b = 0;
scanf("%d" , &a);
for(i= 0;i<2;i++)
printf("%d " , m);
for(i = 2;i<a;i++)
sum = n + m;
printf("%d " , sum);
m = m + n;
n = m - n;
m = m - n;
m = sum;
return 0;
在这个代码中我们可以看到一个问题,那就是当我们输入1 的时候,我们可以发现,我们输出的是两个数字。
所以有了第三个版本。
#include<stdio.h>
int main()
int i = 0;
int a = 0;
int m = 1;
int n = 1;
int sum = 0;
int b = 0;
scanf("%d" , &a);
for(i = 1;i <=a;i++)
printf("%d " , m);
b++;
if(b == 2)
break;
for(i = 2;i<a;i++)
sum = n + m;
printf("%d " , sum);
m = m + n;
n = m - n;
m = m - n;
m = sum;
return 0;
这个版本解决了第二个版本所带来的问题。但它太过繁琐。我觉得这不是最完美的一个。所以有了第四个版本。
#include<stdio.h>
int main()
int a = 1;
int b = 1;
int c = 0;
int n = 0;
int i = 0;
scanf("%d" , &n);
for(i = 0;i< n;i++)
printf("%d " , a);
a = b + c;
c = b;
b = a;
return 0;
这个版本很简单。但我觉得,解决斐波那契数列还会有更简单,更创新的版本。
最后感谢大家的阅读。
以上是关于斐波那契数列的主要内容,如果未能解决你的问题,请参考以下文章