c语言斐波拉契递归题

描述
  大家对斐波拉契数列应该不陌生,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;
}