定义
一个函数在它的函数体内调用它自身称为递归调用。这种函数称为?递归函数
特点
1、递归必须要有边界条件,也就是递归出口(退出递归)递归必须要有边界条件,也就是递归出口(退出递归) 2、当边界条件(递归出口)不满足的时候,递归前进;当边界条件(递归出口)满足时,递归返回。即【未满足递归返回时会一直递归下去】 3、递归返回是一层一层由内向外返回的;
/********递归部分开始********/
function?test?($n){??
????echo?$n."?";?? //这里输出2 1 0?
????if($n>0){??
????????test($n-1);????? //递归点??递归前进
????}else{??
????????echo?"出口";????? //出口?递归出口
????}?
/********递归部分结束********/
????echo?$n."?";?????????? //递归返回,【由出口】向外层一层层返回??
}??
test(2);???????????? //运行结果 2 1 0 出口 0 1 2
注意:
1、不能在 递归出口 中直接 递归返回。如下:【如果出口不需要处理数据,可以直接省略else内容】
function test($n)
{
static $sum = 0;
if ($n > 0) {
$sum += $n;
test($n - 1);
} else {
return $sum; //这里只是递归出口,不能在递归出口中递归返回。
}
//return $sum; //这里才是真正的递归返回
}
$a = test(2);
var_dump($a); //结果为null
?2、不能在递归中使用unset 来销毁用来保存数据的 静态变量、引用变量或者是全局变量
|