我有一个作业,我必须编写斐波那契数列,然后打印它的前 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/