描述
大家对斐波拉契数列应该不陌生,a[1]=1,a[2]=1,a[3]=2,a[4]=3,a[5]=5,……,a[n]=a[n-1]+a[n-2],要求输出下标在30以内斐波拉契数列的任意元素。
格式
输入格式
有多组输入,输入30以内的任意数,输入小于等于0的数时结束输入。
输出格式
把对应下标的数据输出,每组占一行。
样例
样例输入
10
20
30
0
样例输出
55
6765
832040
#include <stdio.h>
int main() {
int a[30],i,n;
a[0]=1;a[1]=1;
for(i=2;i<30;i++){
a[i]=a[i-1]+a[i-2];
}
while(1){
scanf("%d",&n);
if(n<=0) return 0;
printf("%d\n",a[n-1]);
}
return 0;
}
根据规律逐步累加计数就行了
#include <stdio.h>
int main()
{
int a1 = 1,a2 = 1,a3;
int n,i;
scanf("%d",&n);
while(n!=0)
{
a1 = a2 = 1;
if(n==1 || n== 2)
printf("1\n");
else
{
for(i=3;i<=n;i++)
{
a3 = a1+a2;
a1 = a2;
a2 = a3;
}
printf("%d\n",a3);
}
scanf("%d",&n);
}
return 0;
}