Java 冰雹:循环为#1-#200
冰雹问题包括取x,如果x是偶数,则将其除以2。如果它是奇数,乘以3,再加1。继续这个,你会得到一个重复的4,2,1,4,2,1。。。 我在创建循环并让它打印输入#1-#200的解决方案时遇到问题 我尝试在for循环中添加for循环、while循环和while循环。我想不出在经过一次等式之后如何使变量增加 我想出了如何使用输入来编写代码。但在这里我试着加入一个for循环,但它打印“1”,就这样Java 冰雹:循环为#1-#200,java,Java,冰雹问题包括取x,如果x是偶数,则将其除以2。如果它是奇数,乘以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
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(" ");
}
for(int i=200;i 4){
如果(i%2==0){
int i1=i/2;
系统输出打印(i1+“,”);
i=i1;
}
否则{
int i1=i*3+1;
系统输出打印(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(" ");
}