所谓递归函数,就是自调用函数,在函数体内直接或间接自己调用自己。但递归函数自调用时需要设置自调用的条件,若满足条件,则调用函数本身,若不满足则终止本函数的自调用,然后把目前流程的主控权交回给上一层函数来执行。下面,通过一个实例来了解一下这种函数。
<?phpfunction table($a){echo $a." ";
if($a>0) //自调用的条件 { table($a-1); //自调用时变量的值减1 } else { echo "<-->"; } echo $a." "; }
table(10); ?> |
输出的结果是:10 9 8 7 6 5 4 3 2 1 0 <--> 0 1 2 3 4 5 6 7 8 9 10
大家可能有点迷惑,前面的10 9 8 7 6 5 4 3 2 1 0可以很好理解,但后面的0 1 2 3 4 5 6 7 8 9 10是怎么来的呢?这是因为在每次自调用时,自调用后面的echo $a."";没有执行,它会从最后一个自调用结束后才开始1个1个地来运算显示,直到第1个自调用时才结束。最后一个自调用,即$a=1时,这样一来,table($a-1)自调用后$a的值就成为0了;以此类推,倒数第2个自调用,$a=2,也就输出了1……直到第1个自调用。
下面是通过递归函数计算5的阶乘:
<?phpfunction demo($a)
{ if($a > 1) $r=$a*demo($a-1); else $r=$a; return $r; } echo demo(5); ?> 输出的结果是:120(即1*2*3*4*5的结果)。 |