一个PHP的递归函数如何理解

一个PHP的递归函数如何理解,第1张

首先明白递归是栈结构存储,即先进后出, 来看你这个列子,hello字符串进入substr函数首先得到ello不满足跳出递归条件继续递归,直到最后字符串o满足条件跳出递归,于是执行echo,将o先输出接着将lo第一位输出,接着将llo第一位

我是这么理解的不知道帮到你了么

一个函数在它的函数体内调用它自身称为递归调用。

这种函数称为递归函数。

具体的可以去看下这两个关于递归的介绍http://wwwphpcn/php-weizijiaocheng-314935html,http://wwwphpcn/php-weizijiaocheng-314940html,希望采纳

微信小程序推送服务通知需要收集足够的formid,使用过程中发现如果formid大量失效,在使用递归从redis从获取可用formid的时候会导致栈溢出问题,下面方法是使用php的高阶函数来消除递归,完美解决问题,记录之:

<php

class A

{

public static function factorial($n, $accumulator = 1) {

if ($n == 0) {

return $accumulator;

}

return function() use($n, $accumulator) {

return self::factorial($n - 1, $accumulator $n);

};

}

public static function trampoline($params) {

$result = call_user_func_array('self::factorial', $params);

while (is_callable($result)) {

$result = $result();

}

return $result;

}

public static function run()

{

var_dump(self::trampoline(array(500)));

}

}

A::run();

代码二: 和代码1 的区别是 

代码1 是  echo $a'######<br>' 以后  $a+1 了;

结果是

1######

2######

3######

4######

5######

6######

7######

8######

9######

10

代码二   $a+1 以后才  $a'######<br>'

10

9######

8######

7######

6######

5######

4######

3######

2######

1######

其实递归不难理解 无非是执行的次序问题

代码1 的执行次序是

1 demo (1)  --输出1######

2 demo (2)  --输出2######

3 demo (3)  --输出3######

4 demo (4) --输出4######

5 demo (5) --输出5######

6 demo (6) --输出6######

7 demo (7) --输出7######

8 demo (8) --输出8######

9 demo (9) --输出9######

10 demo (10) --输出10

返回demo (9)

返回demo (8)

返回demo (7)

返回demo (6)

返回demo (5)

返回demo (4)

返回demo (3)

返回demo (2)

返回demo (1)

代码2 的执行次序是

1 demo (1)  

2 demo (2)  

3 demo (3)  

4 demo (4) 

5 demo (5) 

6 demo (6) 

7 demo (7) 

8 demo (8) 

9 demo (9) 

10 demo (10) --输出10

11  返回demo (9) --输出9######

12 返回demo (8)--输出8######

13 返回demo (7)--输出7######

14 返回demo (6)--输出6######

15  返回demo (5)--输出5######

16 返回demo (4)--输出4######

17 返回demo (3)--输出3######

18 返回demo (2) --输出2######

19 返回demo (1) --输出1######

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

原文地址: https://outofmemory.cn/langs/11677410.html

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

发表评论

登录后才能评论

评论列表(0条)

保存