关于递归函数的疑问,有代码

//递归函数
function demo6($a)
{
  echo $a."  ";
  if($a>0)
  {
   demo6($a-1);
  }
  else
  {
   echo "<-->";
  }
  echo $a."  ";
}
demo6(10);

输出的结果是:10  9  8  7  6  5  4  3  2  1  0  <-->0  1  2  3  4  5  6  7  8  9  10
对于后一部分的 0  1  2  3  4  5  6  7  8  9  10,这样的结果不明白。当$a=0时 它就会执行echo "<-->";   echo $a."  ";
在我的理解中函数这时已经执行完毕,为什么还会出现1  2  3  4  5  6  7  8  9  10 ?

作者: 250351515   发布时间: 2011-08-25

1.代码是从上到下执行的。这点应该没问题吧。

2.理解这个要从demo(0)开始。输出0 <--->0这个没问题吧

3.然后来看demo(1){
        echo 1;//这没问题吧
    demo(0);//这里会输出0<---->0  ,上边说了,没问题吧
    echo 1;//这里也没问题吧
}
所以这个demo(1)的输出结果就是1 0 <--->0 1
4.对比理解demo(2)、demo(3)。。。即可




作者: 白老师   发布时间: 2011-08-25