php递归函数的理解

   public function digui($i)
    {

        if($i=='1'){
            echo  "*" ;
            echo "<br>";
            return ;
        }else{
            $this->digui($i-1);
            for($j=1;$j<=$i;$j++){
                echo  "*" ;
            }
            echo "<br>";
        }

    }

 调用 $this->digui(3);

结果

*
**
***


  function digui2($n){
        echo $n." ";
        if($n>0){
            $this-> digui2($n-1);
        }else{
            echo "<-->";
        }
        echo $n." ";
    }

 调用 $this->digui2(3);

结果

3 2 1 0 <-->0 1 2 3


 php递归函数的理解



递归函数执行 解剖 实例 (转载别人的)

看如下代码:


<?php
function one($num){
echo $num;
two($num-1);
echo $num;
}
function two($num){
echo $num;
three($num-1);
echo $num;
}
function three($num){
echo $num;
}
one(3);
?>


以上代码对test()函数进行分解操作,我们思考:




执行one(3)函数的时候,同test()函数一样,首先要输出3,然后调用two(2)函数,




注意,此时还没有输出下面的3,




接着走,执行two(2)函数,输出2,调用three(1)函数,同样,这里没有来得及输出下面的2,




执行three(1),直接输出1,不在调用其它函数,




此时,我们想刚刚的two()函数是不是还没有执行完,好,接着执行two()函数没有完成的部分,two()函数执行完之后,也就是输出下面的2,然后开始执行one()函数没有执行完的部分,也就是输出下面的3,此时所有函数执行完毕。




那么,输出结果是:




3 2 1 2 3