#java
#java
Вопрос:
for(i = 1;i <= 100;i )
for(j = i; j <= 100; j )
x ;
System.out.println(x);
Сначала я думал, что результат будет 10.000, но это было 5050. Почему? Что меняет i?
Комментарии:
1. Я предполагаю
x
, что целое число инициализировано значением 0? Вы должны включить все детали, относящиеся к вопросу, в свой пост.
Ответ №1:
Ответ 5050 правильный, учитывая предположение, что x
оно равно 0 (как это представляется на основе ваших результатов). Причина, по которой оно не равно 10 000, заключается в строке j = i
вместо, например j = 1
, что делает его 100 99 98 … 1 = 5050.
Комментарии:
1. Предполагается
x
, что он был инициализирован равным 0. OP даже не заявил об этом. Не говорю, что это плохой ответ, но я думаю, что это стоит упомянуть в качестве предварительного условия.2. @CharlieArmstrong должен был бы принять 0 во время выполнения кода, а результат, полученный операцией, был 5050, x = 0 — единственное число, которое сделало бы это верным для данного кода
3. Конечно, это справедливое замечание. Если бы это был я, я бы все равно поставил что-то в начале, например, «Предполагая
x
, что инициализировано 0, ответ 5050 правильный», просто чтобы быть как можно более понятным. Просто предложение, не более того.
Ответ №2:
Сначала i
is 1
, so j
переходит от 1 к 100, а внутренний цикл выполняет 100 итераций, что означает x
увеличение в 100 раз.
В следующий раз i
становится 2
, так j
что переходит от 2 к 100. Это означает 99 итераций и x
увеличивается в 99 раз и так далее и тому подобное…
Это сумма всех чисел от 100 до 1, которая равна (100 * (100 1)) / 2 == 5050
Ответ №3:
Внутренний цикл выполняется (100 - i) times
на каждой итерации внешнего цикла. т.Е. Когда значение i = 0
во внешнем цикле, выполняется внутренний цикл 100 times
, когда значение i = 1
во внешнем цикле, выполняется внутренний цикл 99 times
и так далее и тому подобное. При добавлении всех этих значений 100 99 98 ... 1 = 5050