为什么这段斐波那契数列不对
#include<stdio.h>int main()
{
int n,a;
a=1;
a=1;
n = 0;
int b;
for(n=2;n<20;n++){
a=a+a;
b = a;
a=b;
a=a;
printf("%d ",a);
}
return 0;
} 问题出在循环内部的交换操作。在每次循环中,您将a的值赋给了b,然后将b赋给a,最后将a的值赋给a。这样的交换操作是错误的,会导致计算出错误的斐波那契数列。
正确的做法是使用一个临时变量来保存a的值,然后再进行交换操作。以下是修正后的代码:
#include <stdio.h>
int main() {
int n, a;
a = 1;
a = 1;
for (n = 2; n < 20; n++) {
a = a + a;
int temp = a;
a = a;
a = temp;
printf("%d ", a);
}
return 0;
}
修正后的代码会正确计算斐波那契数列,并输出结果。
页:
[1]