转载地址:http://blog.sina.com.cn/s/blog_705e4fdc01016dpb.html
递归函数为自调用函数,在函数体内直接或间接自己调用自己,但需要设置自调用的条件,若满足条件,则调用函数本身,若不满足则终止本函数的自调用,然后把目前流程的主控权交回给上一层函数来执行,可能这样给大家讲解,还是很难明白,直接上例子
<?php
function test($n) {
echo $n . " ";
if ($n > 0) {
test($n - 1);
} else {
echo "<-->";
}
echo $n . " ";
}
test(2);
这个例子最终的输出结果是2 1 0<-->0 1 2
我解释下
第一步,执行test(2),echo 2,然后因为2>0,执行test(1), 后面还有没来得及执行的echo 2
第二步,执行test(1),echo 1,然后因为1>0,执行test(0), 同样后面还有没来得及执行的 echo 1
第三步,执行test(0),echo 0,执行test(0),echo 0,
此时函数已经不再调用自己,开始将流程的主控权交回给上一层函数来执行,也就是开始执行刚刚所有test()函数没来得及输出的最后一个echo,0的一层是1也就是输出1