问一个JAVA问题

来源:百度知道 编辑:UC知道 时间:2024/05/30 01:37:53
证明3~100之间的数是否符合角谷猜想
角谷猜想:任何正整数N,如果是偶数,则除2;如果是奇数,则乘3加1,得到一个新数,继续这样的处理,最后得到的数一定是1;

public class a {
public static void main(String args[]) {
int k;
a:for(k=3;k<=100;k++) {
int n = k;
do {
if(n%2 == 0)
n = n/2;
else
n = n*3+1;
if(n == 0){
System.out.print(k+"不满足角谷猜想");
break a;
}
}while(n == 1);
}
if(k == 101) //正常结束循环时K为101;
System.out.print("数3~100间的数满足角谷猜想");
}
}

我看不懂那个17行的 if(k ==101)
k不是只能循环到100吗? 为什么会有101的情况 实在不解 望高人回答

for(exp1;bool;exp2){ statement:}
执行的顺序是exp1,判断bool条件,
a.满足的话执行statement,然后执行exp2,再判断是否满足bool,
满足就执行 a ,不满足就执行b
b,不满足就跳出循环

所以k=100是,会执行statement,然后执行K++,k就是101了,不满足k<=100这个条件,跳出循环

if(k == 101) //正常结束循环时K为101;
注意看,后面的//正常结束循环时K为101。当循环体到100结束之后,后面的J++任然在执行语句。。。。所以要K==101

在for循环中,系统线检查初始数据是否大于条件,不大于执行,大于就退出,只有k累加到101是条件才不成立退出循环,如果是100显然是符合条件的应该继续执行程序,继续在完成一不累加,k增加1.

回答的不错~~~~~~有问题也可以到40978162群 去问~~~~~~~