zoukankan      html  css  js  c++  java
  • PHP中递归最详解释.


    说到递归函数想必会有很多同学感到晕晕的,很难绕,容易绕错,那下面就让我来为大家详解一下

    首先,什么是递归函数呢?

    1、所谓递归:指的是在函数内部,调用函数自身的操作。
    2、递归分两布:递(从最外层函数依次往里调用自身)
                          归(最内层函数执行完后,再逐步向外调用外层函数的后半部分)
     当最外层函数体中,遇到自身函数调用,继续进入内层函数执行。而外层函数的后半部分暂时不执行。直到最内层函数执行完后,再逐步向外执行。

    这是递归函数的文字详解,那接下来我们用代码来解释一下,可能会更直观。

    这个例子输出的结果会是什么呢?

    //结果为:10 9 8 7 6 5 4 3 2 1 0 0 1 2 3 4 5 6 7 8 9 10

    那下面我给大家详细解释一下这个例子的详细过程。

    第一步,执行func(10),echo 10,然后因为10>0,执行func(9),后面还有没来得及执行的echo 10
     
    第二步,执行func(9),echo 9,然后因为9>0,执行func(8),同样后面还有没来得及执行的 echo 9
     
    第三步,执行func(8),echo 8,然后因为8>0,执行func(7),同样后面还有没来得及执行的 echo 8
     
    第四步,执行func(7),echo 7,然后因为7>0,执行func(6),同样后面还有没来得及执行的 echo 7
     
    第五步,执行test(6),echo 6,然后因为6>0,执行func(5),同样后面还有没来得及执行的 echo 6
     
    ………..
     
    第十步,执行func(0),echo 0,此时0>0的条件不满足,不在执行func()函数,而是echo “<–>”,并且执行后面的 echo 0
     
    10 9 8 7 6 5 4 3 2 1 0 <–> 0 1 2 3 4 5 6 7 8 9 10

    此时,输出的内容如上述显示的func部分,此时函数已经不再调用自己,开始将流程的主控权交回给上一层函数来执行
     
    也就是开始执行刚刚所有func()函数没来得及输出的最后一个echo;

    函数执行的第一到第十步,函数输出的的是function部分,func部分还“没来及”输出,就该调用自己执行操作,依次类推,直到流程执行到不再满足调用自己的条件,输出“<–>”,此时,流程该执行前面“没来及”输出的代码。

    如果对我说的还不是很清楚,那再看这张过程图:

  • 相关阅读:
    第 28 章 CSS3 多列布局
    实例解读什么是Redis缓存穿透、缓存雪崩和缓存击穿
    深入浅出一致性Hash原理
    要想深入理解mysql索引?这16个点你必须要了解!
    为什么不要尝试用int来存手机号?
    mysql-覆盖索引
    聚集索引,非聚集索引,覆盖索引 原理
    mysql use index、ignore index、force index用法
    HashMap在JDK1.8版本尾插法实现解析
    redis slot 槽点
  • 原文地址:https://www.cnblogs.com/lixishimeng/p/6893184.html
Copyright © 2011-2022 走看看