PHP 递归

定义

一个函数在它的函数体内调用它自身称为递归调用。这种函数称为 递归函数

特点

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、不能在 递归出口 中直接 递归返回。如下:

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、出口数据和判断条件无直接关系可以省略else语句,一般不建议省略...

上面的例子中的判断条件是$n>0 出口返回的是$num 两者无直接关系

function getPath($dir)
{
    static $files = [];
    $filePaths = scandir($dir);  //扫描路径
    foreach ($filePaths as $fn) {
        if ($fn == "." || $fn == "..") {
            continue;
        }
        $filePath = $dir . DIRECTORY_SEPARATOR . $fn;
        if (is_dir($filePath)) {
            getPath($filePath);
        }else{
            $files[] = $filePath;  //和条件直接相关,不能省略else,否则数据中就有文件夹路径
        }
    }
    return $files;
}

 3、不能在递归中使用unset 来销毁用来保存数据的 静态变量、引用变量或者是全局变量

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值