#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».