gpt4 book ai didi

java - 冰雹 : loop for #1-#200

转载 作者:行者123 更新时间:2023-12-02 09:30:29 27 4
gpt4 key购买 nike

冰雹问题涉及取x,如果它是偶数,则将其除以二。如果是奇数,则乘以 3 再加 1。继续下去,您将得到重复的 4, 2, 1, 4, 2, 1...我在创建循环并让它将解决方案打印到输入 #1-#200 时遇到问题。

我尝试在 for 循环内添加一个 for 循环、while 循环和一个 while 循环。我无法弄清楚如何在运行一次方程后使变量增加。

我弄清楚了如何使用输入来编写代码。但在这里我尝试放入一个 for 循环,但它打印“1”,就是这样。

for (int i = 200; i <= 200; i--) {
System.out.print(i + ", ");

while (i > 4) {
if (i % 2 == 0) {
int i1 = i / 2;
System.out.print(i1 + ", ");
i = i1;
}
else {
int i1 = i * 3 + 1;
System.out.print(i1 + ", ");
i = i1;
}
}

System.out.println(" ");
}

最佳答案

您正在覆盖循环计数器。因此,在完成 x=200 的冰雹问题后,您不会在 x=199 时启动它,而是在 x=3 时启动它。

其次,您不是尝试 1 到 200 之间的值,而是尝试所有小于或等于 200 的值。这也包括负数。因此你的程序以无限循环结束。

我的解决方案是引入一个额外的整数 j,在 for 循环开始时使用 i 的值进行初始化,并继续对该整数 j 进行减法等操作。为了使外部 for 循环有限,我将条件切换为 i > 0。这样,在完成 x=1 的冰雹问题后,循环将停止。

for (int i = 200; i > 0; i--) {
int j = i
System.out.print(i + ", ");

while (j > 4) {

if (j % 2 == 0) {
int i1 = j / 2;
System.out.print(i1 + ", ");
j = i1;

}
else {
int i1 = j * 3 + 1;
System.out.print(i1 + ", ");
j = i1;
}
}
System.out.println(" ");

}

关于java - 冰雹 : loop for #1-#200,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58031833/

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