php递归函数?????

function demo($num){
echo $num."<br>";

if($num>0)
demo($num-1);
else
echo "--------------------<br>";

echo $num."<br>";
}

demo(10);

我弄不明白为什么“ echo $num."<br>";”在上面的程序执行完后会再输出0 1 2 3 4 5 6 7 8 9 10,,其原理在哪里?????(上网看了一下相似的解答,但还是不明白,所以请各位别去“借鉴”。)谢谢。

第1个回答  2014-02-28
在PHP中,递归是通过栈来实现的,栈是后进先出的,所以最后一次递归调用最先输出
第2个回答  2014-02-28
这个很难说得清楚,靠自己去理清思路的。
其实就是

第一个参数10传进去后,那函数还没有执行完,又要执行9,然后是8.... 到0的时候,
再把把前面没执行完的再执行, 0...8, 9, 10这样
第3个回答  2014-02-28
执行demo($num);时不是还要将$num带入原函数中吗?
$num=10 echo $num=10-->$num=9带入
$num=9 echo $num=9-->$num=8带入....
$num=0 echo $num=0-->$num不大于0返回 $num=0 echo $num=0."<br>";返回 $num=1时的echo $num=1."<br>";....
$num=10时echo $num=10."<br>"; 返回主程序,你说的原因不就是在函数一开始就有一个输出了吗?
第4个回答  2014-02-28
很简单,每个demo函数不考虑中间的自身递归,都输出同样的2个数$num.,这两个数其实就是首尾对称的的两个数,本回答被网友采纳