Основной вопрос цикла, включая время и для - PullRequest
0 голосов
/ 13 декабря 2018

Я не мог понять, почему я здесь равен 3. Условная часть цикла for работает для n1 = 4, n2 = 2 и n1 = 3, n2 = 3. Разве я не должен быть равен 2?Подробное пошаговое объяснение действительно поможет.

public static void main(String[] args) {
    int n1 = 4;
    int n2 = 2;
    int i = 0;
    while (n2 <= 4) {
        for (; n1 >= n2; n1--)
            i++;
    n2++;
    }
    System.out.println(i);
    System.out.println(n2 + " " + n1);
}

Ответы [ 2 ]

0 голосов
/ 13 декабря 2018

Если бы это было: for (; n1 > n2; n1--), тогда я был бы 2

0 голосов
/ 13 декабря 2018

Когда ваш код выполняется во время цикла в первый раз, он напрямую попадает в цикл for и увеличивает значение i в три раза.Поскольку ваш цикл for выполняется до тех пор, пока n1 не станет меньше, чем n2.

Первый шаг цикла for

4 >= 2 (n1 >= n2)
    increase i (i becomes 1)
    loop decreases n1 (n1 becomes 3)
3 >= 2 (n1 >= n2)
    increase i (i becomes 2)
    loop decreases n1 (n1 becomes 2)
2 >= 2 (n1 >= n2)
    increase i (i becomes 3)
    loop decreases n1 (n1 becomes 1)

выходит из цикла, когда n1 становится равным 1. Вторая итерация в цикле whileне входит в цикл for, потому что n1 меньше, чем n2.

Таким образом, ваша переменная i имеет значение 3.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...