一本通c++ 1204输出超限

信息学奥赛一本通(c++) 1204输出超限
#include

using namespace std;
long long n,a[35];
int main(){
a[1]=1,a[2]=2;
for(int i=3; i<=35; i++)
a[i]=a[i-1]+a[i-2];
cin>>n;
while(n!=0){
cout<
cin>>n;
}
return 0;
}

九个测试点输出超限,一个测试点超时
我用的是递推算法,编译运行是可以正常输出的

改一下试试


    while (cin >> n)
    {
        cout << a[n] << '\n';
    }

题目是啥?
a数组越界了啊,当i=35的时候,a[35]是越界的啊

#include <bits/stdc++.h>

using namespace std;

int n;

long long aa(int n)//递归
{
    if(n==0||n==1)
    {
        return 1;//n为1或0时只有一种方法
    }
    else 
    {
        return aa(n-1)+aa(n-2);//继续递归
    }
}

int main()
{   
    while(scanf("%d",&n))//如果有输入就输出
    {
        cout<<aa(n)<<endl;
    }
    
    return 0;
}