为什么这个print语句打印3而不是1004作为输出?
int n = 2005;
for (int i = 0; i < 50; i++)
n = (n + 3) / 2;
System.out.print(n);
如果我这样做:
int n = 2005;
for (int i = 0; i < 50; i++)
System.out.println(n);
n = (n + 3) / 2;
System.out.print(n);
它为每次迭代打印2005,最后一次打印1004。
如果有括号(如下所示)
int n = 2005;
for (int i = 0; i < 50; i++){
System.out.println(n);
n = (n + 3) / 2;
}
System.out.print(n);
}
然后它表现得像2005年 1004 503 253 128 65 34 18 10 6 4 3 3 .... 3
答案 0 :(得分:2)
在n
循环中打印for
,然后您将了解其工作原理。
int n = 2005;
for (int i = 0; i < 50; i++){
System.out.println(n);
n = (n + 3) / 2;
}
答案 1 :(得分:2)
不详细说明:您每次都或多或少地将n
减少一半。最终n
将接近3.然后是(3 + 3) / 2 == 3
。实际上,如果给定足够长的迭代次数,您将获得大多数初始数字。