c - 使用指针返回包含前 n 个斐波那契数的数组

标签 c pointers fibonacci

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

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;
}

如果有人能给我指明正确的方向,那就太好了,谢谢!

最佳答案

您在 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];
}

关于c - 使用指针返回包含前 n 个斐波那契数的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47602840/

相关文章:

c - "++"操作在 C 中是原子的吗?

c++ - 库定义位于何处?

c++ - 如何: derived member in derived class with derived class specific methods

c++ - 谁能给我解释一下这段代码?

c++ - 斐波那契数的递归函数

按值调用结果?

c++ - 确定确切的头文件

c - 使用指针显示数组内容

c++ - 斐波那契数列通过串行代码

c - 斐波那契数列在 C 中计数第 50 个数时出现段错误