有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    在每次迭代中都运行这两个条件,因此即使第一个条件将n更新为1,以下条件也会立即将其值更改为再次大于1

    如果第一个条件为false,则只应运行第二个条件的主体,这意味着可以将第二个条件转换为else子句:

    if ((n % 2) == 0) {
        n/=2;
        System.out.println(n);
    } else {
        n*=3;
        n++;
        System.out.println(n);
    }
    

    例如:

    假设n==2——第一个条件为true,它将n2修改为1。现在,在同一个迭代中,第二个条件变为真,并且n乘以3,再加上1,所以循环不会结束