php递归无法返回问题,递归正确写法

常规写法

function digui($tiaojian){
    if ($tiaojian) {
        return  $data;
    }
    else{
        return digui();
    }
}   

注意:条件不成立时,一定要return 递归函数。不然无法正常返回

如果递归只是为了输出。可以简写:

function digui($tiaojian){
    if ($tiaojian) {
        echo $data;
    }
    else{
        digui();
    }
}   

引用写法

function digui($tiaojian,&$result){
    if ($tiaojian) {
        $result=$data;
    }
    else{
        digui();
    }
}

静态变量

function digui(){
    static $count=0;
    echo $count;
    $count++;
}

digui();
digui();
digui();
digui();
digui();

输出结果为:0 1 2 3 4
注意:静态变量方法一定要谨慎使用。因为每次调用该方法的时候,都会对原来最早定义这个变量方法的基础上去操作。

甚至 unset 对静态变量也无法销毁

function digui(){
    static $count=0;
    echo $count;
    $count++;
    unset($count);
}

digui();
digui();
digui();
digui();
digui();

这段代码依旧输出 0 1 2 3

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值