我有一个作业,我必须写斐波那契序列,然后打印它的前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
未初始化变量的行为未定义。
如前所述,不需要数组来完成此赋值你只需要记住最后和当前的斐波那契值将它们相加生成新的,然后迁移current->last和new->current。把逻辑放在一个由n
控制的循环中。