我试图计算用户输入的斐波那契序列。因此,如果用户输入10,程序将按顺序输出所有数字,最多10,在这种情况下是0,1,1,2,3,5,8
这是我的代码:
#include <stdio.h>
int main ()
{
/* variable definition: */
int a, b, usrNumber;
/* Initialize */
a = 0;
b = 1;
usrNumber = 0;
/* Ask user for number */
printf("Please enter a positive number\n");
scanf("%d", &usrNumber);
/* Conduct Loop */
while (b < usrNumber)
{
printf("%d \n",a);
a += b;
printf("%d \n",b);
b += a;
}
return(0);
}
当我运行10和60时,序列会比预期的短一个数字。当我运行90或300时,序列会按预期工作。有没有想过为什么我不能让低一点的数字发挥作用?
最佳答案
代替使用每个循环两个步骤,可以使用辅助变量。
while (b < usrNumber) {
aux=b;
b+=a;
a=aux;
printf("%d ",b);}