这道题目如果用函数递归的话肯定会超时,应为函数调用要耗费时间,所以用数组来写。
#include<iostream>
using namespace std;
/*int fn(int m){//之前想用递归写,可是超时了。
if(m==1||m==2)
return 1;
return fn(m-1)+fn(m-2);
}*/
int main(){
int n,m;
int a[45];
scanf("%d",&n);
while(n--){
a[0]=0; a[1]=a[2]=1;
scanf("%d",&m);
for(int i=2;i<=m;i++)
a[i]=a[i-1]+a[i-2];
printf("%d\n",a[m]);
}
//system("pause");
return 0;
}