Я пытаюсь изучить рекурсию и написал функцию, которая принимает число и подсчитывает его до нуля, а затем снова подсчитывает его до исходного числа, функция работает, но я не понимаю, почему она работает как оно делает. Я понимаю, почему первая печать после инструкции else печатает: «5 4 3 2 1», а затем число равно 0, а оператор if печатает: «0». Именно после этого сценария я не понимаю, так как теперь функция входит во вторую печать после инструкции else и печатает: «1 2 3 4 5», что очень странно для меня. Я был бы очень признателен, если бы кто-нибудь мог мне это объяснить.Почему эта рекурсивная функция работает так?
<?php
function rec_downandup($num){
if($num == 0){
print '0 ';
}else{
print $num.' ';
rec_downandup($num-1);
print $num.' ';
}
}
rec_downandup(5);
?>
Выход
5 4 3 2 1 0 1 2 3 4 5
Попробуйте выполнить ручную проверку. –
Ну, 5 пройдут и дважды будут печататься ... но между тем, что 4 пройдут и будут печататься дважды ... но между тем, что 3 пройдут и дважды напечатают ...и т. д. – smerny