斐波纳契错误输出?(C)

use*_*838 4 c algorithm fibonacci

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;
}
Run Code Online (Sandbox Code Playgroud)

我似乎无法确定我的程序出了什么问题,输出会一直显示为0,1,1,1,1等等?

小智 5

arr(i) = arr(0) + arr(1);   
Run Code Online (Sandbox Code Playgroud)

不应该那样

arr(i) = arr(i-1) + arr(i-2);
Run Code Online (Sandbox Code Playgroud)


Dar*_*ren 5

您的代码的作用如下:

arr(3) = 0 + 1
arr(4) = 0 + 1
arr(5) = 0 + 1
Run Code Online (Sandbox Code Playgroud)

等你一遍又一遍地分配相同的值.

你需要这样做:

 arr(i) = arr(i - 1) + arr(i - 2);
Run Code Online (Sandbox Code Playgroud)

说明:

假设你有阵列:

  • 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