我试图编写一个代码,用一些微小的变化来计算Fibonacci。 对迭代次数有限制,有一个目标编号,每次迭代时,数字除以2。
我的代码不能正常工作。 它只适用于lim = 1 在所有其他情况下,它没有做任何事情
任何人都可以看到这个错误吗?
int main()
{
int i, lim, gen_num,
fib1, fib2, next, count = 0, iterations = 0;
printf("Please enter the desired population\n");
scanf("%d", &lim);
printf("Please enter the number of generations alowd\n");
scanf("%d", &i);
printf("Please enter the number of generations between each disaster\n");
scanf("%d", &gen_num);
fib1 = 0;
fib2 = 1;
while (fib2 < lim);
{
if (iterations <= i)
{
next = fib1 + fib2;
fib1 = fib2;
fib2 = next;
count += 1;
iterations += 1;
if (count%gen_num == 0)
{
fib2 /= 2;
}
printf("%d ", fib2);
}
else
{
printf("Number of iterations exceeded\n");
return 0;
}
}
return 0;
}
答案 0 :(得分:1)
这一行:
while (fib2 < lim);
当fib2
小于lim
时,是无限循环。末尾的分号表示你有一个空语句作为循环体,它相当于:
while (fib < lim) {
}