搬砖笔记:浅谈递归return null

递归

什么是递归?

回答 自己调用自己就是递归

引用百科的一个故事去理解:

从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?“从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?‘从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?……’”

递归需要几个条件

1,递归必须 要有边界条件,也就是递归出口(退出递归)

2,递归前进段和递归返回段,也就是最后得到的值

3,当边界条件(递归出口)不满足时,递归前进;当边界条件(递归出口)满足时,递归返回。

举个递归小例子,比如,

张三去和李四借钱,李四说你等一下,我去找王五借给你,

然后李四去找王五借钱,王五说你等一下,我去找赵六借给你,

最后王五找赵六借钱,赵六借给了王五。(这里就是递归出口)

说了这么多,上代码

<?php

function recursion($i)
{
    if($i > 10){
        return $i;
    }else{
        $i++;
        recursion($i);
    }
}
var_dump(recursion(8));

?>

看到这里,请问最后输出的是几呢?别着急往下看,你猜猜是几?

输出 NULL
很奇怪吧,答案不应该是11吗?

好的让我们回到那个小故事。最后王五找赵六借钱,赵六借给了王五。(这里就是递归出口)。王五拿到钱之后应该干嘛呢?应该把钱给李四,对吗?

<?php

function recursion($i)
{
    if($i > 10){
    //在这里就好比赵六把钱借给了王五
        return $i;
    }else{
        $i++;
        recursion($i);
    }
}

然后程序继续执行

function recursion($i)
{
    if($i > 10){
        return $i;
    }else{
        $i++;
        //这时的王五拿这钱,站在原地不知道该干嘛了~~~
        recursion($i);
    }
}

那么如何让王五把钱给赵四呢

function recursion($i)
{
    if($i > 10){
        return $i;
    }else{
        $i++;
      //在这里加个return
        return recursion($i);
    }
}

var_dump(recursion(8));

输出  11
?>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值