我认为此代码的结果= 4950。 那是因为99 + 98 + ... 1 = 4950。 你能告诉我怎么做。
public static void main(String[] args) {
int n = 100;
int total = 0;
while(n >= 0){
total += --n;
}
System.out.println(total);
}
答案 0 :(得分:13)
你是对的,99 + 98 + ... + 1 = 4950。但你必须遵循逻辑。
考虑n = 0时.while循环的条件求值为true,并且在添加到total
之前应用递减运算符。如果递减一个值为0的变量,则得到-1,当你将-1加到4950时,得到4949。
所以我们真正看到的是:99 + 98 + ... + 1 + 0 +( - 1)。这相当于4949。
答案 1 :(得分:2)
尝试更改代码:
System.out.println("before " + n + ", " + total);
total += --n;
System.out.println("after " + n + ", " + total);
答案 2 :(得分:1)
a+=b means a=a+b;
a =--n means a = n-1 and n = n-1; a=n-- means a=n;n=n-1;
所以,在循环中: 第一次:
total = total+99;//total = 0+99; n =99;
第二次:
total = total+98;//total=99+98;n=98
...
最后,你知道......
答案 3 :(得分:1)
在将其添加到total之前递减n的值,最后一次迭代将-1加到总数中。
将代码更改为后递减以获得正确的结果,添加1..100;如果要添加1..99。
,则需要将起点更改为99答案 4 :(得分:1)
由于你输入了-n,因此在将n值添加到总数之前,n值会减少。由于当n等于0时允许程序进入while循环,最后的添加是,
总计+ = -1
这意味着,4950-1,所以答案是4949。
如果您想获得4950,请按如下方式更改while循环中的条件。
while(n> 0)
然后while循环不允许程序进入while循环,如果n的值等于0.因此没有-1情况。你会得到4950。