PHP里的这个递归函数是怎么个执行顺序

PHP里的这个递归函数是怎么个执行顺序,第1张

正确答案应该是 2 1 <-->1 2

if($n>1)

test($n-1);

else

echo '<-->';

$j=2;

echo $n" ";//这个语句是在if else语句外的!!等调用完if else的语句后,这句依然要被执行,也就是说,在递归调用到最底层,往回的时候,也执行了这些语句~ 1 2 就是这里来的!

test(2);

function test($n){

echo $n" ";//输出2" "

if($n>1)

test($n-1);//调用test(1)

echo $n" ";//输出1

if($n>1)

test($n-1);

else

echo "<-->";

$j=2;

echo $n" ";//输出1" "

else

echo '<-->';

$j=2;//这句是没作用的

echo $n" ";//输出2" "

}

这样还不明白的话,无解了!多看看递归的思想吧!

$arr = array(1,'b',2,array(3,'c',array(8,'m',10)));

function d(&$arr){

foreach($arr as $k=>$v){

if(is_numeric($v)){

$arr[$k]=$v2;

}else{

$arr[$k]=$v;

}

if(is_array($v)){

d($arr[$k]);

}

}

}

d($arr);

print_r($arr);

首先运行的是catsort($arr,0,1);这样循环到北京市,满足循环里的if条件,于是运行catsort($arr,1,2);在这里循环到海定区的时候满足if,于是运行catsort($arr,3,3);在catsort($arr,3,3)里面,循环中没有一条是满足if条件的,也就是没有parent_id=3的元素,所以就没再执行catsort方法了。return之后继续catsort($arr,1,2);的循环,循环到朝阳区。

童鞋你好,你会产生这样的疑问是因为你没有搞清楚函数参数的使用范围,一级递归的过程,下来解析一下此函数的递归过程:

10 第一次递归 sum=10,先输出10,执行递归后,demo里面的 依然是10

9 第二次递归 sum=9,先输出9,执行递归后,demo里面的 依然是9

7 。

6 。

5 。

4 。

3 。

2 。

1 第10次递归 sum=1,先输出1,执行递归后,demo里面的 参数是1, 接着发生最后一次递归

0 第11次递归 demo里面的参数值为0,故不再递归了,由于这次sum=0 故执行else echo "--------------------<br>";

接着执行 echo $num"<br>"; 后返回sum=1 时 的 这里接着执行: echo $num"<br>";

}

一次向后倒着执行 echo $num"<br>";

} 故得到下面的结果!

---------------------------

0

1

2

3

4

5

6

7

8

9

10

 /

      递归实现无限极分类

      @param $array 分类数据

      @param $pid 父ID

      @param $level 分类级别

      @return $list 分好类的数组 直接遍历即可 $level可以用来遍历缩进

     /

    function getTree($array, $pid =0, $level = 0){

        //声明静态数组,避免递归调用时,多次声明导致数组覆盖

        static $list = [];        foreach ($array as $key => $value){            //第一次遍历,找到父节点为根节点的节点 也就是pid=0的节点

            if ($value['pid'] == $pid){                //父节点为根节点的节点,级别为0,也就是第一级

                $value['level'] = $level;                //把数组放到list中

                $list[] = $value;                //把这个节点从数组中移除,减少后续递归消耗

                unset($array[$key]);                //开始递归,查找父ID为该节点ID的节点,级别则为原级别+1

                getTree($array, $value['id'], $level+1);

            }

        }

以上就是关于PHP里的这个递归函数是怎么个执行顺序全部的内容,包括:PHP里的这个递归函数是怎么个执行顺序、php递归Array、php递归问题(无限极分类)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/10063820.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-04
下一篇2023-05-04

发表评论

登录后才能评论

评论列表(0条)

    保存