java My While循环即使在满足条件时也不会结束
因此,作为一项任务,我试图建立一个Collatz Conjecture
程序。我的程序按预期运行,但唯一的问题是,它并没有在达到1时结束。相反,代码循环和程序似乎在自己的循环中从头开始。下面是我的代码。非常感谢您的帮助。谢谢!
while (n!=1){
if ((n % 2) == 0) {
n/=2;
System.out.println(n);
}
if ((n % 2) > 0) {
n*=3;
n++;
System.out.println(n);
}
n = n;
}
# 1 楼答案
在每次迭代中都运行这两个条件,因此即使第一个条件将
n
更新为1
,以下条件也会立即将其值更改为再次大于1
如果第一个条件为false,则只应运行第二个条件的主体,这意味着可以将第二个条件转换为
else
子句:例如:
假设
n==2
——第一个条件为true,它将n
从2
修改为1
。现在,在同一个迭代中,第二个条件变为真,并且n
乘以3
,再加上1
,所以循环不会结束