这是示例代码:
public static void col (int n)
{
if (n % 2 == 0)
n = n/2 ;
if (n % 2 != 0)
n = ((n*3)+1) ;
System.out.println (n) ;
if (n != 1)
col (n) ;
}
这工作得很好,直到它下降到 2。然后它2 4 2 4 2 4 2 4 2 4
无限输出。在我看来,如果将 2 输入为 n,(n % 2 == 0)
则为真 2 将除以 2 得到 1。然后将打印 1,因为(n != 1)
为假,循环将终止。
为什么这不会发生?