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,依次类推。