use*_*845 1 php algorithm recursion computer-science
我正在尝试学习递归,并编写了一个函数,它接受一个数字并将其计数到零,然后再次将其计数到原始数字,该函数有效,但我不明白为什么它的工作方式与它一样.我解释了为什么在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);
?>
Run Code Online (Sandbox Code Playgroud)
产量
5 4 3 2 1 0 1 2 3 4 5
Run Code Online (Sandbox Code Playgroud)
当你仔细看时,它应该变得清晰.
print $num.' ';
rec_downandup($num-1);
print $num.' ';
Run Code Online (Sandbox Code Playgroud)
对于您的第一个输入,您将获得
print 5.' ';
rec_downandup(4);
print 5.' ';
Run Code Online (Sandbox Code Playgroud)
在那之后,它就是
print 5.' ';
print 4.' ';
rec_downandup(3);
print 4.' ';
print 5.' ';
Run Code Online (Sandbox Code Playgroud)
因此看起来功能向下和向上计数,但实际上它只是倒计时并将每个数字放置两次 - 第二次按相反的顺序排列,因此它似乎在计数.
| 归档时间: |
|
| 查看次数: |
97 次 |
| 最近记录: |