您好我需要在php递归函数中进行一次澄清,请参阅下面的代码。
<?php
function test($count=1){
if($count <5){
echo $count;
test(++$count);
}
echo $count;
}
test();
?>
对于上述功能,我得到这样的输出1 2 3 4 5 5 4 3 2 我知道前6个元素的逻辑,但我不知道反向元素是如何产生的。请解释我的逻辑
答案 0 :(得分:1)
每次迭代都会打印出$count
两次;一次&#34;在下降的路上&#34;并且一旦&#34;正在上升&#34;。你有两个echo $count
陈述;一个在调用新test()
之前调用的函数,并在递归返回后调用它。由于$count
不是全局变量,因此每次迭代都会为$count
保留自己的值
答案 1 :(得分:1)
输出的后半部分来自第二个echo
语句。
您可以向echo
添加标记以使事情变得明显:
<?php
function test($count=1){
if($count <5){
echo "A:$count ";
test(++$count);
}
echo "B:$count ";
}
test();
?>
// will print A:1 A:2 A:3 A:4 B:5 B:5 B:4 B:3 B:2
以下是显示echo
顺序的伪调用图:
test(1) {
echo A:1
test(2) {
echo A:2
test(3) {
echo A:3
test(4) {
echo A:4
test(5) {
echo B:5
}
echo B:5
}
echo B:4
}
echo B:3
}
echo B:2
}