PHP 递归

function test($a=0,&$result=array()){
$a++;
if ($a<10) {
  $result[]=$a;
  test($a,$result);
}
echo $a;
return $result;
 

  

上面的例子非常简单,以a<10作为判断条件,条件成立,则把a赋给result[];

将result 的引用传入函数,会将每一次递归产生的a添加到结果数组result。因而本例生成的$result数组是

Array (

     [0] => 1

     [1] => 2

     [2] => 3

    [3] => 4

    [4] => 5

    [5] => 6

    [6] => 7

     [7] => 8

     [8] => 9

) 。


本例比较有意思的是echo a  的值。相信很多人认为是12345678910吧,其实不然,是1098765432。为什么呢?

 因为函数还没执行echo  a   前就进行了下一次的函数递归。真正执行echo a是当a<10条件不满足的时候,echo a,返回result,对于上一层而言,执行完递归函数,开始执行本层的echo $a,依次类推。

posted @ 2020-05-26 10:00  御世制人  阅读(133)  评论(0编辑  收藏  举报