英文:
Why the x is 5050?
问题
for(i = 1; i <= 100; i++)
for(j = i; j <= 100; j++)
x++;
System.out.println(x);
一开始我以为结果会是 10,000,但实际上是 5050。为什么?i 发生了什么变化?
英文:
for(i = 1;i <= 100;i++)
for(j = i; j <= 100; j++)
x++;
System.out.println(x);
First I thought that the result would be 10.000, but it was 5050. Why? What does the i changes?
答案1
得分: 8
5050这个答案是正确的,假设x
为0(根据你的结果推断出来的)。之所以不是10000,是因为代码中的这行:j = i
,而不是例如j = 1
,这使得结果为100 + 99 + 98 + ... + 1 = 5050。
英文:
The answer 5050 is correct, given the assumption that x
is 0 (as it appears based on your results). The reason it is not 10,000 is the line j = i
instead of e.g. j = 1
, which makes it 100 + 99 + 98 + ... + 1 = 5050.
答案2
得分: 2
起初,i
为 1
,因此 j
也从 1 变化到 100,内部循环执行了 100 次迭代,这意味着 x
被增加了 100 次。
接下来,i
变为 2
,所以 j
从 2 变化到 100。这意味着进行了 99 次迭代,x
被增加了 99 次,依此类推...
这是从 1 累加到 100 所有数字的和,即 (100 * (100 + 1)) / 2 == 5050
。
英文:
At first i
is 1
, so j
goes from 1 too 100 and the inner loop does 100 iterations, which means x
is incremented 100 times.
The next time, i
becomes 2
, so j
goes from 2 to 100. That means 99 iterations and x
is incremented 99 times and so on and so forth...
That's the sum of all numbers from 100 to 1, which is (100 * (100 + 1)) / 2 == 5050
答案3
得分: 0
内部循环在外部循环的每次迭代中执行(100 - i)次
。即当外部循环中的i
的值为0
时,内部循环执行100次
;当外部循环中的i
的值为1
时,内部循环执行99次
,依此类推。将所有这些值相加得到100 + 99 + 98 + ... + 1 = 5050
。
英文:
The inner loop executes (100 - i) times
on each iteration of the outer loop. i.e. when the value of i = 0
in the outer loop, the inner loop executes 100 times
, when the value of i = 1
in the outer loop, the inner loop executes 99 times
and so on and so forth. When adding all these values 100 + 99 + 98 + ... + 1 = 5050
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论