我正在尝试编写一个计算斐波那契的代码,并进行一些小的更改。 迭代次数有限制,有一个目标数,每 i 次迭代该数字除以 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;
}
最佳答案
这一行:
while (fib2 < lim);
当fib2
小于lim
时,是一个无限循环。末尾的分号意味着你有一个空语句作为循环体,它相当于:
while (fib < lim) {
}
关于c - 斐波那契与扭曲,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33703327/