c - 斐波那契数列错误 C

标签 c arrays for-loop sequence fibonacci

我有一个作业,我必须编写斐波那契数列,然后打印它的前 n 个数字,其中 n 由用户输入。我写的是:

#include <stdio.h>
int main(int argc, char*argv[]){

int n, i, seq[n];
scanf("%d", &n);
seq[0]=0; seq[1]=1;
for(i=2; i<n; i++)
seq[i]=seq[i-1]+seq[i-2];

for(i=0; i<n; i++)
printf("%d ", seq[i]);
return(0);
}

在 n 等于或大于 9 之前一直有效。假设您输入 8,序列应该是 0 1 1 2 3 5 8 13。如果您输入 9 或更大,序列看起来像这样 0 1 1 2 3 5 8 13 21 -9(随机数串)。

谁能指出问题所在?提前致谢。

最佳答案

你声明 int n, i, seq[n]; 之前你有一个 n 的值来设置数组的长度。未初始化变量的行为是未定义的。

您不需要数组来完成所描述的这个赋值。您只需要记住最后一个和当前的斐波那契值。将它们求和以生成新的,然后迁移当前的 -> 最后的和新的 -> 当前的。将该逻辑放入由 n 控制的循环中。

关于c - 斐波那契数列错误 C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33465021/

相关文章:

c - 如何同步调用shell命令?

arrays - 从数组中删除最后一个元素

c - 在 C 中使用巨大数组的质数生成器

javascript - 为什么我的 Javascript for 循环是连接数字而不是相加?

javascript存储for循环结果

c - LIRC 零键代码 0x10001d0f

c++ - 什么是跳台?

c - 使用 O2 在 AArch64 上保留位精确浮点计算

c - 使用 fgets() 的段错误

javascript - For 循环取决于数字输入