|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include<stdio.h>
int main()
{
int n,a[20];
a[0]=1;
a[1]=1;
n = 0;
int b;
for(n=2;n<20;n++){
a[n]=a[n-1]+a[n-2];
b = a[n-1];
a[n-2]=b;
a[n-1]=a[n];
printf("%d ",a[n]);
}
return 0;
}
问题出在循环内部的交换操作。在每次循环中,您将a[n-1]的值赋给了b,然后将b赋给a[n-2],最后将a[n]的值赋给a[n-1]。这样的交换操作是错误的,会导致计算出错误的斐波那契数列。
正确的做法是使用一个临时变量来保存a[n-1]的值,然后再进行交换操作。以下是修正后的代码:
- #include <stdio.h>
- int main() {
- int n, a[20];
- a[0] = 1;
- a[1] = 1;
- for (n = 2; n < 20; n++) {
- a[n] = a[n - 1] + a[n - 2];
- int temp = a[n - 1];
- a[n - 1] = a[n];
- a[n] = temp;
- printf("%d ", a[n]);
- }
- return 0;
- }
复制代码
修正后的代码会正确计算斐波那契数列,并输出结果。
|
|