我想学习递归,并写了一个函数,它需要一个数字并将其计数到零,然后再次将其计数到原始数字,该函数起作用,但我不明白的原因是它为什么会起作用它确实如此。我记住了为什么在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
尝试手动追踪执行。 – 2014-09-25 13:27:46
那么,5将通过并打印两次......但在4之间会通过并打印两次......但在这之间3将通过并打印两次......等 – smerny 2014-09-25 13:28:27