php递归函数的理解

递归函数其实就是自己再调用自己,直到条件终止的时候结束

主要还是来剖析一下这个递归函数的执行过程吧

1.首先代码的执行顺序是从上往下,从左往右的顺序。

首先拿到代码不能被自己的思维所带进坑(想象一下你就是机器,你应该咋弄嘞)

例如累加的例子,搞简单点就从1加到10吧累加,正常来说如果用for循环的话当然可以,如果是递归的话来看看咋弄(我的思路)

$a = 10;

function sum($a){
    $total +=$a;
    return $total;
}
echo sum($a);

1.定义一个函数,首先调用的话需要返回值,这个一定OK,此时$total 肯定是10了没跑了。

2.如果是这样的话,你会发现他返回的永远都是10

$a = 10;

function sum($a){
    $total += $a;
    /*
    * 此时得要往后面加呀
    * 10 + 9
    * 9的话就是这个函数sum(9)不就OK;来个判断
    */
    if($a > 1){
        如果$a 是大于1 的话,那么继续加则还得用sum
        sum(--$a);
    }
    
    return $total;
}

此时你就不得不说一下php设计时候针对函数作用域的问题 因为函数的变量他是局部的,也就是说我判断里面的sum跟外头的这个sum其实就俩回事

<?php
$a = 10;

function sum($i){
//这里$a 还是$i都无所谓哈,是函数的参数,跟外头的没关系
    $total += $i;
    if($i >1){
        sum(--$i);
    }
    return $total;
}

echo sum($a);


//来说下这个
//sum(--$i);因为程序是按顺序执行
//此时应该是sum(9)
//也就是说此时
function sum(9){
     $total += 9;
     if(9 > 1){    
         sum(8);    
     }
    return $total;
}
function sum(9){
     $total += 8;
     if(8 > 1){    
         sum(7);    
     }
    return $total;
}
但是这个返回的值没卵用啊现在咋办。执行最终结果还是返回了10

3.所以得把之前的加上去就OK,搞定。

<?php
$a = 10;
function sum($i){
    $total += $i;
    if($i >1){
        $total += sum(--$i);
    }
    return $total;
}

echo sum($a);

https://blog.csdn.net/weixin_44088587/article/details/111309262 我的这篇删除非空目录也会涉及到递归的用法

https://blog.csdn.net/weixin_44088587/article/details/111353206 我的这篇复制目录也会涉及到递归的用法

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值