进入正题。在PHP编程中,递归是一种非常重要的技巧,即函数内部调用自身来解决问题。实现递归的方式有很多,下面我来介绍三种基本的实现方式。
这是最基本的递归实现方式,将递归函数嵌套在方法中,一旦触发递归条件,就调用递归函数。代码如下:
function factorial($n){
if($n == 1) return 1; //递归的出口条件
else return $n*factorial($n-1); //递归调用自身
}
echo factorial(5); //输出120
上述代码实现了计算阶乘,递归出口条件为 $n=1$ 时返回1,其余情况调用自身,由于递归每次传递的值越来越小,终会达到递归出口条件,从而计算出结果。
递归函数必须有一个能够一直记住已实现结果的变量,以便于后续的操作,静态变量正好能够满足这个需求。代码如下:
function recursive($arg){
static $x = 0; // 记录计算的结果
if($arg==0){ // 递归出口条件
return $x;
}else{
$x += $arg; // 每次计算结果存到静态变量中
return recursive($arg-1); //递归调用自身
}
}
echo recursive(5); //输出15
递归函数是在一个环境中进行多次调用,正常情况下每次调用都是独立的。使用&引用可以将变量变成稳定状态,下一次调用可以继续上一次的结果,代码如下:
function getArray($n, &$arr){
if($n>0){
getArray($n-1, $arr); //递归调用自身
$arr[] = $n; //将计算结果存到数组中
}
return $arr;
}
print_r(getArray(5, $a)); //输出Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 )
上述代码通过递归函数实现了倒序输出数组中的数字。
以上就是使用PHP实现递归的三种基本方式。