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;
}
我似乎无法确定我的程序出了什么问题,输出会一直显示为0,1,1,1,1等等?
答案 0 :(得分:5)
arr(i) = arr(0) + arr(1);
不应该是
arr(i) = arr(i-1) + arr(i-2);
答案 1 :(得分:5)
您的代码的作用如下:
arr(3) = 0 + 1
arr(4) = 0 + 1
arr(5) = 0 + 1
等。您一遍又一遍地分配相同的值。
你需要这样做:
arr(i) = arr(i - 1) + arr(i - 2);
<强>解释强>
假设你有阵列:
且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