zoukankan      html  css  js  c++  java
  • PHP递归算法的一个实例 帮助理解

    递归函数为自调用函数,在函数体内直接或间接自己调用自己,但需要设置自调用的条件,若满足条件,则调用函数本身,若不满足则终止本函数的自调用,然后把目前流程的主控权交回给上一层函数来执行,可能这样给大家讲解,还是很难明白,直接上例子


    function test ($n){
        echo $n."  ";
        if($n>0){
            test($n-1);
        }else{
            echo "<-->";
        }
        echo $n."  "
    }
    test(2)

    这个例子最终的输出结果是2 1 0<-->0 1 2

    我解释下  为何输出是这样的

    第一步,执行test(2),echo 2,然后因为2>0,执行test(1), 后面还有没来得及执行的echo 2
    第二步,执行test(1),echo 1,然后因为1>0,执行test(0),同样后面还有没来得及执行的 echo 1
    第三步,执行test(0),echo 0,执行test(0),echo 0,  此时0>0的条件不满足,不在执行test()函数,而是echo “<-->”,并且执行后面的 echo 0

    此时函数已经不再调用自己,开始将流程的主控权交回给上一层函数来执行,也就是开始执行刚刚所有test()函数没来得及输出的最后一个echo,0的一层是1也就是输出1  1的上一层是2 也就是输出2    2没有山一层  所以呢   输出的内容就是2 1 0<-->0 1 2

    正因为来之不易,所以才有了后来的倍加珍惜。
  • 相关阅读:
    IO
    多线程
    常用类
    异常
    接口
    面向对象
    面向对象
    学习数组
    for的嵌套循环
    XML:是什么?怎样工作的?可以做什么?将来的发展有会怎样?
  • 原文地址:https://www.cnblogs.com/jjxhp/p/8924150.html
Copyright © 2011-2022 走看看