我一开是用递归写的,但是TLE。用递归可以优化成记忆化存储。后来我改用递推,却有负数。因为算的结果会超int范围,所以应该用long long类型。
#include<iostream>
using namespace std;
const int N=60;
int a[N];
long long fbnqsl(int b)
{
if(b==0)
return 0;
else if(b==1 || b==2)
return 1;
else
{
long long c=0,c1=1,c2;
for(int i=1;i<b;i++)
{
c2=c+c1;
c=c1;
c1=c2;
}
return c2;
}
}
int main()
{
//freopen("xxx.in","r",stdin);
//freopen("yyy.out","w",stdout);
int n;
cin >> n;
for(int i=0;i<n;i++)
{
cin >> a[i];
}
for(int i=0;i<n;i++)
{
cout << "Fib(" << a[i] << ") = " << fbnqsl(a[i]);
cout << endl;
}
//fclose(stdin);
//fclose(stdout);
return 0;
}