gpt4 book ai didi

java - 为什么这个循环不终止?

转载 作者:搜寻专家 更新时间:2023-11-01 04:05:17 27 4
gpt4 key购买 nike

示例代码如下:

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) 为 false 循环将终止。

为什么这不会发生?

最佳答案

因为当你得到 1 时,你乘以 3 加 1,又回到 4。

你需要一个ELSE。我不懂 java,但它看起来像这样:

public static void col (int n) 
{
if (n % 2 == 0)
n = n/2 ;
else if (n % 2 != 0)
n = ((n*3)+1) ;

System.out.println (n) ;
if (n != 1)
col (n) ;
}

编辑:如评论中所述,您可以省略 else 之后的 if 测试:

if (n % 2 == 0) 
n = n/2 ;
else
n = ((n*3)+1) ;

关于java - 为什么这个循环不终止?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2505094/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com