您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息
免费发信息
三六零分类信息网 > 齐齐哈尔分类信息网,免费分类信息发布

php递归函数中一个逻辑问题的解决

2024/4/6 19:27:50发布19次查看
我们在之前的文章中给大家介绍了关于php递归函数中的返回值问题,那么我们今天再给大家介绍下一个关于php递归函数中的一个逻辑问题,这个问题很多小伙伴都会出现的,今天就带大家解析下!
首先,我们得知道递归函数是什么东西,通俗来讲也就是自己调用自己本身的函数。
现在需要设计一段代码,解决1到10叠加的问题。
代码a:
<?php //递归函数 $num=10; function add($sum){ static $tot; if($sum>=1){ $tot+=$sum; add(--$sum); }else{ return $tot; } } echo add($num); ?>
代码b:
<?php //递归函数 $num=10; function add($sum){ static $tot; if($sum>=1){ $tot+=$sum; return add(--$sum); }else{ return $tot; } } echo add($num); ?>
a中打印不出想要的结果,b中可以实现。而a和b代码中的唯一差别就是在if中添加了一个return。
下面就开始分析整个递归的过程,完全可以去看看盗梦空间加深理解了:(以不能实现的a代码为例)
1.将10带入函数中,if语句判断之后,$tot开始叠加。
2.这里重点来了:将参数减一之后重新带入函数中。(没有返回值!!!)
3.接着上面的过程一直循环,一直到$sum=1,这从外到内,由10到1,这10层的循环都没有返回值。
4.$sum=0的时候,要求有返回值。
就好像,盗梦空间中,主角在11层梦境中醒来,但是前面10层的梦境都处于睡眠阶段。这主角你觉得醒的过来吗,明显不可能。他只能卡在第11层梦境,永远醒不过来。
唯一能让主角醒过来的办法也就是他的每一层梦醒都醒过来,一直回到现实生活中。而相对与a代码,b代码则从第一层开始就要求有返回值,一直到11层都要有返回值。所以11层醒过来之后激活了第10层,然后一层一层的激活,最后就顺利醒过来了,这个最后的结果也就正确输出了。
总结:
通过上述的php递归函数中的逻辑问题,很多小伙伴可能都感受跟自己遇到的一样的,希望可以通过上面的两段代码帮你解决你的问题!
相关推荐:
php递归函数出现返回值问题的解决
php递归函数实现的三种方式分析
php递归函数的使用示例
php递归函数怎么用才有效?php递归函数典型例子
以上就是php递归函数中一个逻辑问题的解决的详细内容。
齐齐哈尔分类信息网,免费分类信息发布

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录