码迷,mamicode.com
首页 > Web开发 > 详细

PHP递归函数

时间:2020-03-21 09:59:45      阅读:84      评论:0      收藏:0      [点我收藏+]

标签:alt   info   php   调用   src   结束   code   com   参考   

递归函数

递归函数是指直接或间接的调用函数自身的函数。

递归函数的条件

  • 在每一次调用自己时,必须是(在某种意义上)更接近于解;
  • 必须有一个终止处理或计算的准则;

示例:

<?php
    function demo($a=1){
        if($a<=3){
            echo "第{$a}次执行<br>";
            $a++;
            demo($a);
        }
    }
    demo();

效果如图:
技术图片

??这个很好理解把,首先$a=1条件成立执行真区间,打印一次,$a自增后作为实参传入,调用自身,此时$a=2,条件成立,再次打印。再自增再传入,$a=3,条件依旧成立,第三次打印,自增$a=4传入,调用。此时条件不成立。函数执行完结。一共打印了3次。

示例2:

//计算从1到10的累加和
function demo($a){
    if($a >=1 ){
        return $a + demo($a - 1);
        //第一次执行 10 + demo(9)
        //第二次执行 10 + 9 + demo(8)
        //第三次执行 10 + 9 + 8 + demo(7)
        //.......
        //第十次执行 10+9+...demo(0),此时$a=0条件不成立,依次返回,返回到第一层即0+1+2+3..+10,这就是递归
    }
}
echo demo(10);  //55

示例3:

function demo($num)
{
    echo $num, "<br>";  

    if ($num > 0) {
        demo($num-1);
    }

    echo $num, "<br>";
}

demo(3);        //3 2 1 0 0 1 2 3
  • 函数的每一次调用, 都是独立的空间, 不会互相影响.
  • 代码从上往下执行, 执行完毕才会继续往下执行。
  • 所以示例3依次打印3,2,1,0(此时条件不成立执行真区间后代码),0(最内层demo结束返回上一层),1(这是的$num为1,每层的$num互不影响),2(本层$num为2),1(最外层函数结束)。

理解递归参考汉诺塔问题php解决

PHP递归函数

标签:alt   info   php   调用   src   结束   code   com   参考   

原文地址:https://www.cnblogs.com/zylm/p/12536384.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!