码迷,mamicode.com
首页 > 编程语言 > 详细

PHP递归算法的一个实例 帮助理解

时间:2016-08-18 00:59:09      阅读:150      评论:0      收藏:0      [点我收藏+]

标签:

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


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

PHP递归算法的一个实例 帮助理解

标签:

原文地址:http://www.cnblogs.com/kekjiuyue/p/5782445.html

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