int i =14;
int j =2;
    for(i--;i>j;j+=2,i-=j%3){
        System.out.println(i + " ");
}

Он возвращает 13,12,12,10, но я не понимаю причину этого!

-2
Hobis Snakeuss 10 Июл 2021 в 21:18

2 ответа

Лучший ответ

Вы должны познакомиться с циклом for. Первая часть нормально запускает счетчик цикла for. Вторая часть определяет условие входа в цикл для другого раунда, третья часть обновляет счетчик для следующего раунда.

  1. Запуск цикла for i устанавливается равным 13 с помощью i--.

    • 13 больше 2.
    • Следовательно, выведите i = 13.
    • Обновить счетчики j = 4 на j + = 2 и i = 12 на i- = 4% 3 псевдоним i- = 1.
  2. Условие 12 больше 4 выполнено.

    • Следовательно, выведите i = 12.
    • Обновить счетчики j = 6 на j + = 2 и i = 12 на i- = 6% 3 alias i- = 0
  3. Условие 12 больше 6 выполнено.

    • Следовательно, выведите i = 12.
    • Обновить счетчики j = 8 на j + = 2 и i = 10 на i- = 8% 3 alias i- = 2
  4. Условие 10 больше 8 выполнено.

    • Следовательно, выведите i = 10.
    • Обновить счетчики j = 10 на j + = 2 и i = 9 на i- = 10% 3 alias i- = 1
  5. Условие 9 больше 10 не выполнено.

    • Выйти из цикла.
1
azro 10 Июл 2021 в 19:04

i уменьшается до 13 в качестве начального условия. i>j - это условие продолжения цикла, поэтому, если j>=i цикл завершается. На каждой итерации j увеличивается на 2, а i уменьшается на j%3 (это остаток после деления j на 3).

Я предлагаю вам вручную вычислить i и j на бумаге, чтобы убедиться в этом результате.

0
codebod 10 Июл 2021 в 18:26