AcWing 741. 斐波那契数列-2方法-1错解
原题链接
简单
作者:
枫哥
,
2024-10-26 10:06:18
,
所有人可见
,
阅读 1
// 法1:滚动数组
int main(){
int T,N;
cin >> T;
while(T--){
long long a = 0,b = 1,c;
cin >> N;
for(int i = 0;i <=N;i++){
if(i == N) printf("Fib(%d) = %lld\n",N,a);
c = a + b;
a = b;
b = c;
}
}
return 0;
}
// 法2:数组
int main(){
long long T, n, nums[65]; // 使用 long long 类型以防止数值溢出
cin >> T;
while(T--,cin >> n){
for (int i = 0; i <= n;i++){
if (i == 0) nums[i] = 0;
else if (i == 1) nums[i] = 1;
else nums[i] = nums[i-2] +nums[i-1];
}
printf("Fib(%d) = %lld\n",n,nums[n]);
}
return 0;
}
// 错误:递归-超时
int fei(int n){
if (n == 0) return 0;
if (n == 1) return 1;
return fei(n-2)+fei(n-1);
}
int main(){
int T,n;
cin >> T;
while(T--,cin >> n)
printf("Fib(%d) = %d\n",n,fei(n));
return 0;
}