Почему разный результат между циклом while и for

#loops #for-loop #while-loop

#циклы #for-цикл #цикл while

Вопрос:

Я только что вошел в мир кодирования и изучаю все о циклах. Я только что узнал о циклах for и while, но не понимаю, почему они возвращают разные результаты. Может кто-нибудь, пожалуйста, объяснить логику в терминах непрофессионала.

/* для кода цикла */

 $counter = 0;
$start = 1;
$end = 11;

for($start;$start<$end;start  ) {
$counter=$counter 1;
print $counter;
}
  

Результат, который я получаю, это 1, 2, 3, 4, 5, 6, 7 , 8, 9 , 10

/* код цикла while */

 $start=0;
$end=11;

while($start<end) {
$start=$start 1;
print $start;
}
  

Результат, который я получаю, равен 1,2,3,4,5,6,7,8,9,10,11

Почему цикл while возвращает результат от 1 до 11, в то время как цикл for возвращает результат от 1 до 10

Ответ №1:

Приращение в цикле for выполняется после первого цикла.

Попробуйте это:

 $start=1;
$end=11;

while($start<end) {
    print $start;
    $start=$start 1;
}
  

Ответ №2:

В for случае $start начинается с 1, но в while случае $start начинается с 0.

Работаем над for

  iteration    $start      $start<$end     counter   print   start          
    1           1            1<11           1         1        2
    2           2            2<11           2         2        3
    3           3            3<11           3         3        4
    4           4            4<11           4         4        5
    5           5            5<11           5         5        6
    6           6            6<11           6         6        7
    7           7            7<11           7         7        8
    8           8            8<11           8         8        9
    9           9            9<11           9         9        10
   10           10          10<11          10         10       11
   11           11          11<11 
                          // (false) break
  

Аналогично работайте с while циклом. Это упражнение с карандашом на бумаге.

Комментарии:

1. Хорошо, но если я не начну с 0, то результат будет варьироваться от 2 до 11, в отличие от 1 до 10.

2. Спасибо, Махеш. Я проверил это с помощью приведенного ниже кода $start=1; $ end = 11; for($start;$start<$end;$start ) { print $start. «<br>»; } Результат, который я получаю, от 1 до 10, однако, если я попытаюсь выполнить следующее с помощью кода цикла while, я получу результат от 2 до 11 $ start = 1; $end = 11; while ($start<$end) { $start = $start 1; print $ start; } Мой вопрос заключается в том, что они инициализируются с одинаковыми значениями, т. е. 1, заканчиваются с тем же значением, т. е. 11, и имеют тот же счетчик, т. е. start = start 1, но результаты разные.

Ответ №3:

два счетчика не инициализированы с одинаковым значением, попробуйте первый с

 $start = 1;
  

Комментарии:

1. Да, если я запускаю их с одинаковым значением, например, 1, цикл while возвращает результат от 2 до 11, когда конкретно я отметил, что хотел бы, чтобы он был меньше 11, т. е. 2, 3,4,5,6,7,8,9,10,11

2. На самом деле вы указали, что значение than $start должно быть меньше 11 не $counter

Ответ №4:

На последней итерации цикла while, 10<11, затем вы добавляете 1 к 10, так что это равно 11. Но вы уже находитесь в своем цикле. Таким образом, он распечатывается. При следующем прохождении 11<11 равно false, поэтому он немедленно завершается.

Теперь, если вы хотите, чтобы это сработало, переместите $start = $start 1; в ПОСЛЕ инструкции print.

Кроме того, я думаю, вы сами себя сбиваете с толку. В одном примере вы выводите «$ start», а в другом — «$ counter».