斐波那契数列:每一个数都等于前两位数之和
又称兔子数列:有一对兔子从出生后第3个月起每个月都生一对兔子,小兔子长到第3个月后每个月又生一对兔子,假设所有兔子不死,问每个月的兔子总数为多少?
下面为循环及变量的代码实现
#include<stdio.h>
//输出斐波那契 Fibonacci数列 前四十个数,又称兔子数列
//有一对兔子, 从出生后第3月 每个月都生一对兔子。小兔子长到第3个月后每个月又生一对兔子,假设所有兔子不死,问每个月的兔子总数为多少?
int main()
{
int f1,f2,f3; //int f1=1,f2=1,f3;
f1=1;
f2=1;
printf("%5d%5d",f1,f2);
for(int i=0;i<38;i++)
{
f3=f1+f2;
printf("%5d",f3);
f1=f2;
f2=f3;
}
return 0;
}
/*
简化程序版 ,减少语句数量,减少变量使用内存空间
int main()
{
int f1=1,f2=1;
for(int i=1;i<21;i++) //一次输出两个变量,故i缩减为一半
{
printf("%10d %10d",f1,f2);
if(i%2==0)
printf("\n");
f1=f1+f2;
f2=f1+f2;
}
return 0;
}
*/
例:1,1,2……
下面为利用数组进行的操作代码
#include<stdio.h>
int main()
{
int i;
int a[30]={1,1}; //部分赋初值
for(i=2;i<30;i++) //循环赋值
{
a[i]=a[i-1]+a[i-2];
}
for(i=0;i<30;i++) //输出数列值,注意看括号内i的初始值不同了
{
if(i%5==0) //每五个数进行换行
printf("\n");
printf("%10d",a[i]); //给十个空位
}
return 0;
}