斐波那契错误输出?(C) int*fibonacci(int n){ 整数范围=n+1; int*arr=malloc(范围*sizeof(int)); arr(0)=0; arr(1)=1; 对于(int i=2;i

斐波那契错误输出?(C) int*fibonacci(int n){ 整数范围=n+1; int*arr=malloc(范围*sizeof(int)); arr(0)=0; arr(1)=1; 对于(int i=2;i,c,algorithm,fibonacci,C,Algorithm,Fibonacci,我似乎无法确定我的程序出了什么问题,输出结果一直是0、1、1、1、1等等 int * fibonacci(int n) { int range = n + 1; int * arr = malloc(range * sizeof(int)); arr(0) = 0; arr(1) = 1; for(int i = 2; i < range; ++i) { arr(i) = arr(0) + arr(1); } r

我似乎无法确定我的程序出了什么问题,输出结果一直是0、1、1、1、1等等

int * fibonacci(int n) {
    int range = n + 1;
    int * arr = malloc(range * sizeof(int));
    arr(0) = 0;
    arr(1) = 1;
    for(int i = 2; i < range; ++i) {
        arr(i) = arr(0) + arr(1);   
    }
    return arr;
}
难道不是吗

arr(i) = arr(0) + arr(1);   

您的代码的作用如下:

arr(i) = arr(i-1) + arr(i-2);
等等。您正在一次又一次地分配相同的值

您需要执行以下操作:

arr(3) = 0 + 1
arr(4) = 0 + 1
arr(5) = 0 + 1
说明:

假设您拥有阵列:

  • arr(1)=0
  • arr(2)=1
i
位于索引3,这将分配
arr(3)=arr(2)+arr(1)
,即1+0。因此,arr(3)=1


i
现在位于索引4,这将分配
arr(4)=arr(3)+arr(2)
,即1+1。因此,arr(4)=2

您应该使用方括号,例如,
arr[0]
arr[i]
 arr(i) = arr(i - 1) + arr(i - 2);