斐波那契错误输出?(C) int*fibonacci(int n){ 整数范围=n+1; int*arr=malloc(范围*sizeof(int)); arr(0)=0; arr(1)=1; 对于(int i=2;i
我似乎无法确定我的程序出了什么问题,输出结果一直是0、1、1、1、1等等斐波那契错误输出?(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
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);