public class Proof {
public static void main(String[] args) {
for (int x = 1; x < 3; x++) {
do {
if (x == 0) {
x = x * 3 + 1;
} else if (x % 2 != 0) {
x = x * 3 + 1;
} else if (x % 2 == 0) {
x /= 2;
}
System.out.println(x);
} while (x != 1);
System.out.println("DONE!!!!!!");
System.out.println();
}
}
}
要测试此问题,只需将x < 3
更改为2
即可。然后将其更改回3
,它不起作用。我只是一个新的程序员,但我对此感到困惑。
答案 0 :(得分:1)
所以,当x == 1时,你会经历do while循环并最终返回到1,退出然后你将for循环迭代到2 ...当你改变时,它会退出for循环是x&lt; 2。
当x < 3,会发生什么? X像以前一样经历do while循环,但是你不会在2处退出for循环,你实际上会回到do while循环。但什么时候退出do while循环???只有当x == 1 ...那么你的for循环会发生什么?它再次将x迭代到..... 2。而你又回到了你的循环中。永远!
正如Casey所说,调试器会向您展示这一点并且非常有用。祝你好运!
答案 1 :(得分:1)
答案 2 :(得分:0)
else if
条件,x增加到 4 。while
循环,并经历第二个else if
条件。 x除以2,因此等于 2 。while
循环退出。else if
条件。你回到了第四步,因此在计算中达到一个循环,并且你已经描述了无限循环执行。