1215787625 发表于 2023-11-9 16:02:38

为什么这段斐波那契数列不对

#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;
}

isdkz 发表于 2023-11-9 16:03:14

问题出在循环内部的交换操作。在每次循环中,您将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]
查看完整版本: 为什么这段斐波那契数列不对