递归函数是我们常用到的一类函数,最基本的特点是函数自身调用自身,但必须在调用自身前有条件判断,否则无限无限调用下去。
利用引用做参数
function test($a=0,&$result=array()){
$a++;
if ($a<10) {
$result[]=$a;
$this->test($a,$result);
}
echo $a;
return $result;
}
利用全局变量
利用全局变量完成递归函数,要理解什么是全局变量。global在函数内申明变量不过是外部变量的同名引用。变量的作用范围仍然在本函数范围内。改变这些变量的值,外部同名变量的值自然也改变了。但一旦用了&,同名变量不再是同名引用。利用全局变量实现递归函数没必要理解到这么深的一层,还保持原有对全局变量的看法就可以顺理成章理解递归函数。
function test($a=0,$result=array()){
global $result;
$a++;
if ($a<10) {
$result[]=$a;
$this->test($a,$result);
}
return $result;
}
利用静态变量
我们常常在类中见到static,今天我们把它利用到递归函数中。请记住static的作用:仅在第一次调用函数的时候对变量进行初始化,并且保留变量值。
function test(){
static $count=0;
echo $count;
$count++;
}
test();
test();
test();
test();
test();
所谓递归函数,重点是如何处理函数调用自身是如何保证所需要的结果得以在函数间合理"传递",当然也有不需要函数之间传值得递归函数
function test($b=0){
$b++;
if ($b<10) {
echo $b;
$this-> test($b);
}
}
来源:https://www.cnblogs.com/xiong-hua/p/12018501.html