这里是示例代码:
这段代码在数字大于2的时候能够正常工作,但当n等于2时,它会无限输出“2 4 2 4 2 4 2 4 2 4”。我认为如果n等于2,则(n % 2 == 0)条件成立,2将被2整除得1,然后打印出1,由于(n != 1)条件不成立,循环将终止。为什么不是这样呢?
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的时候能够正常工作,但当n等于2时,它会无限输出“2 4 2 4 2 4 2 4 2 4”。我认为如果n等于2,则(n % 2 == 0)条件成立,2将被2整除得1,然后打印出1,由于(n != 1)条件不成立,循环将终止。为什么不是这样呢?