Вложенный для l oop вывод неверен - PullRequest
3 голосов
/ 07 мая 2020
 for(int c = 1; c <= rows; c++) {
      for(int i = 0; i < c; i++) {
          System.out.print(++number + " ");
      }
 }

предположим, что изначально rows = 5 и number = 0. какой будет выход?

для меня, если бы строк было 5, результат был бы следующим: 1 2 3 4 5

однако мой учитель сказал это как: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

и я не могу осмыслить это! кто-нибудь может объяснить почему? Я тоже пробовал с разными числами, для 2 я бы получил только число 1,2, но мой профессор получил 1,2,3

Ответы [ 3 ]

2 голосов
/ 07 мая 2020

У вас есть два вложенных цикла.

Внешний l oop повторяется от 1 до 5.

Внутренний l oop повторяется от 0 до c - 1.

Когда c == 1, внутренний l oop повторяется от 0 до 0, поэтому number увеличивается на 1 раз.

Когда c == 2, внутренний l oop выполняет итерацию от 0 до 1, поэтому number увеличивается в 2 раза.

Когда c == 3, внутренний l oop повторяется от 0 до 2, поэтому number увеличивается в 3 раза.

Когда c == 4, внутренний l oop повторяется от 0 до 3, поэтому number увеличивается в 4 раза.

Когда c == 5, внутренний l oop повторяется от 0 до 4, поэтому number увеличивается 5 раз.

Всего number увеличивается 1 + 2 + 3 + 4 + 5 == 15 раз.

Каждый раз number увеличивается, он также печатается с пробелом. Таким образом, циклы производят вывод 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15.

1 голос
/ 07 мая 2020

Для каждой строки с внутренним l oop выполнить System.out.print(++number + " "); этот оператор всего 15(1 + 2 + 3 + 4 + 5) раз, и каждый раз, когда числовое значение реализуется и печатается.

Взгляните на визуализацию здесь

0 голосов
/ 07 мая 2020

Лучший способ разобраться в этом типе проблем - это dry -run. Я делюсь двухэтапным запуском dry в надежде, что это будет полезно: dry -run

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