为什么此语句打印此输出?

时间:2014-07-11 20:32:11

标签: java

为什么这个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

2 个答案:

答案 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。实际上,如果给定足够长的迭代次数,您将获得大多数初始数字。