我正在研究一个简单的函数,给定一个输入n,返回n个Fibonacci的数字。
int main(){
int n = 0;
int counter = 1;
int f1, f2, f3 = 1;
printf("Insert an integer bigger than 0:\n");
scanf("%i", &n);
printf("%i", f1);
while(counter <= n){
f3 = f1 + f2;
printf("%i\n", f3);
f1 = f2;
f2 = f3;
counter = counter + 1;
}
return 0;
}
令人惊讶的是,每次运行程序时,该函数都会返回不同的结果。此外,这些数字远远大于/小于任何可能的结果。
最有可能的是,我遗漏了一些明显的东西,但我无法解释这种行为。
答案 0 :(得分:7)
这一行:
int f1, f2, f3 = 1;
仅将f3
初始化为1,它不会初始化f1
和f2
。
你应该改用它:
int f1 = 1, f2 = 1, f3 = 1;
初始化所有三个。