斐波纳契扭曲

时间:2015-11-13 23:25:19

标签: c

我试图编写一个代码,用一些微小的变化来计算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;   
}

1 个答案:

答案 0 :(得分:1)

这一行:

while (fib2 < lim);
fib2小于lim时,

是无限循环。末尾的分号表示你有一个空语句作为循环体,它相当于:

while (fib < lim) {
}