【C语⾔编程】求Fibonacci(斐波那契)数列前40个数
问题:
求Fibonacci(斐波那契)数列前40个数。
分析:
这个数列有如下特点:第1,2两个数为1,1。从第三个数开始,该数是其前⾯两个数之和。即该数列为1,1,2,3,5,8,13,… ,⽤数学⽅式表⽰为:
代码:
#include<stdio.h>
int main(){
int f1 =1,f2 =1;c语言斐波那契数列
int i;
for(int i =1; i<=20; i++){//结束条件
printf("%12d %12d",f1,f2);
if(i%2==0)printf("\n");//if语句作⽤是使输出4个数后换⾏
f1 = f1+f2;
f2 = f2+f1;
}
return0;
}
输出结果:
改:
1、若想⼀⾏不⽌输出4个数,只需要调整if语句中的条件。由于每次循环是输出两个数,所以if(i%2 == 0)是循环两次(输出4个数)换⼀⾏,那么循环三次(输出6个数)换⼀⾏就可以写成if(i%3 == 0),以此类推。
2、若想改变结束条件,则在for循环中修改即可。
for (int i = 1; i<=20; i++)是循环输出直到循环20次(输出40个数)为⽌,若想在输出的值上作限制,此处还需考虑。
在此我只想到另⼀种⽅法。上⾯的代码也是可以改的,但是改完会更加臃肿,我能想到的只有下⾯的⽅法:
#include<stdio.h>
int main(){
int f1 =1,f2 =1,f3;
int i;
printf("%12d%12d",f1,f2);
for(int i =3;; i++){//此处要从第三个数开始计算i
f3 = f1 + f2;
if(f3>15)break;//此处⽤值来限制循环
printf("%12d",f3);
if(i%6==0)printf("\n");//换⾏在此设置
f1 = f2;
f2 = f3;
}
return0;
}
3、也可⽤数组实现斐波那契数列,并且可以加上想要输出的项:
#include<stdio.h>
#define N 10000  //数组中容纳的项数
int main(){
long int a[N]={1,1};
int n;
printf("输⼊想求的项数:");
scanf("%d",&n);
for(int i =2;i< n ; i++){
a[i]= a[i-1]+ a[i-2];
}
printf("%ld",a[n-1]);
return0;
}
有好的想法欢迎留⾔!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。