为什么我的代码会立即终止?

Ale*_*nue 1 java fibonacci while-loop

我正在尝试打印出低于四百万的Fibonacci序列的所有正数.

public static void main(String[] args) {

    int n1 = 1;
    int n2 = 2;
    int n3 = 0;

    while (n3 <= 4000000) {
        n3 = n1 + n2;
        if (n3 % 2 == 0) {
            System.out.println(n3);
        }
        n1+=1;
        n2+=1;
    }
}
Run Code Online (Sandbox Code Playgroud)

Jim*_*son 6

你的逻辑不正确.

如果你是通过这个代码在调试器中的步骤,你会看到,n3永远连(你正在测试中n3 % 2 == 0),这样的if条件是不正确的.

现代处理器不需要很长时间才能达到400万(最多几十毫秒),因此程序似乎立即终止.