使用指针返回包含前n个Fibonacci数的数组

时间:2017-12-01 23:20:30

标签: c pointers fibonacci

当涉及指针和内存分配时,我仍然是初学者,我正在尝试使用指针创建一个返回前n个Fibonacci序列的函数。当我尝试使用此代码时,它会返回随机数,但我不知道如何修复它。这是代码:

int* generateFibonacci(int n)
{
// make an array for n ints
int *result = malloc(n * sizeof(int));

if (result == NULL)
{
    // fail
    printf("I have no memory, sorry. Exiting");
    exit(1);
}

result[0] = 0;
result[1] = 1;

for (int i = 0; i < n; i++)
{
    result[i + 2] = result[i - 1] + result[i - 2];
}

return result;
}

如果有人能指出我的方向很好,谢谢你!

1 个答案:

答案 0 :(得分:1)

您正在for循环

中访问数组越界
for (int i = 0; i < n; i++)
{
    result[i + 2] = result[i - 1] + result[i - 2];
}

对于i = 0i -1i -2超出了限制访问权限。同样,对于= n-2i+2正在访问result[n],这也是超出绑定的访问权限(数组索引从0到n-1)。
您可以通过

解决此问题
for (int i = 2; i < n; i++){
    result[i] = result[i - 2] + result[i - 1];
}