PHP递归的三种常用方式


Posted in PHP onFebruary 28, 2019

递归:函数自己调用自己的一种编程方法,类似于循环,所以递归调用的函数中必须有终止条件,否则就会成为死循环

无限级:其实并不是真正的无限级,只是层级不确定,所以我们称之为无限级

因为常用递归实现无限级分类,所以我们习惯说无限级的时候带上分类。

递归的三种常用技法:

静态变量、全局变量、引用

一 静态变量方式

function loop(){
 static $i = 0;
 echo $i.' ';
 $i++;
 if($i<10){
     loop();
 }
}
loop();//输出 0 1 2 3 4 5 6 7 8 9

二 全局变量方式

$i = 0;
function loopGlobal(){
  global $i;
 echo $i.' ';
 $i++;
 if($i<10){
    loopGlobal();
 }
}
loopGlobal();//输出 0 1 2 3 4 5 6 7 8 9

三 引用传参方式

function loopReference(&$i=0){
 echo $i.' ';
 $i++;
 if($i<10){
  loopReference($i);
 }
}
loopReference();//输出 0 1 2 3 4 5 6 7 8 9

递归经常被用在处理无限级的问题上,通过以上三种手法再结合实际情况,灵活运用就可以解决自己的无限级问题。如果你是新手,我很乐意在评论里看到你的困惑。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。如果你想了解更多相关内容请查看下面相关链接

PHP 相关文章推荐
多文件上传的例子
Oct 09 PHP
PHP开发中常用的字符串操作函数
Feb 08 PHP
基于MySQL分区性能的详细介绍
May 02 PHP
解析PHP中的file_get_contents获取远程页面乱码的问题
Jun 25 PHP
php实现文件下载代码分享
Aug 19 PHP
php运行提示:Fatal error Allowed memory size内存不足的解决方法
Dec 17 PHP
php一个解析字符串排列数组的方法
May 12 PHP
Yii中srbac权限扩展模块工作原理与用法分析
Jul 14 PHP
Laravel学习教程之路由模块
Aug 18 PHP
Laravel 5.5 的自定义验证对象/类示例代码详解
Aug 29 PHP
php curl获取到json对象并转成数组array的方法
May 31 PHP
laravel 修改记住我功能的cookie保存时间的方法
Oct 14 PHP
PHP递归算法的简单实例
Feb 28 #PHP
PHP根据key删除数组中指定的元素
Feb 28 #PHP
PHP去除空数组且数组键名重置的讲解
Feb 28 #PHP
PHP中rename()函数的妙用讲解
Feb 28 #PHP
PHP实现获取ip地址的5种方法,以及插入用户登录日志操作示例
Feb 28 #PHP
PHP微信发送推送消息乱码的解决方法
Feb 28 #PHP
CI(CodeIgniter)框架中URL特殊字符处理与SQL注入隐患分析
Feb 28 #PHP
You might like
php magic_quotes_gpc的一点认识与分析
2008/08/18 PHP
解析PHP函数array_flip()在重复数组元素删除中的作用
2013/06/27 PHP
ThinkPHP中url隐藏入口文件后接收alipay传值的方法
2014/12/09 PHP
PHP实现获取中英文首字母
2015/06/19 PHP
thinkPHP基于ajax实现的菜单与分页示例
2016/07/12 PHP
Ajax中的JSON格式与php传输过程全面解析
2017/11/14 PHP
PHP基于cookie实现统计在线人数功能示例
2019/01/16 PHP
JavaScript 全面解析各种浏览器网页中的JS 执行顺序
2009/02/17 Javascript
WEB页子窗口(showModalDialog和showModelessDialog)使用说明
2009/10/25 Javascript
extjs DataReader、JsonReader、XmlReader的构造方法
2009/11/07 Javascript
Bootstrap每天必学之栅格系统(布局)
2015/11/25 Javascript
JavaScript知识点整理
2015/12/09 Javascript
jquery实现拖动效果
2016/08/10 Javascript
js手机号批量滚动抽奖实现代码
2020/04/17 Javascript
jquery animate动画持续运动的实例
2017/11/29 jQuery
详解Vue组件插槽的使用以及调用组件内的方法
2018/11/13 Javascript
JSON字符串操作移除空串更改key/value的介绍
2019/01/05 Javascript
vue基础之data存储数据及v-for循环用法示例
2019/03/08 Javascript
Vue分页器实现原理详解
2019/06/28 Javascript
详解ES6新增字符串扩张方法includes()、startsWith()、endsWith()
2020/05/12 Javascript
详解JavaScript之ES5的继承
2020/07/08 Javascript
javascript实现图片轮换动作方法
2020/08/07 Javascript
Vue 电商后台管理项目阶段性总结(推荐)
2020/08/22 Javascript
Python用GET方法上传文件
2015/03/10 Python
Django rest framework工具包简单用法示例
2018/07/20 Python
python获取指定日期范围内的每一天,每个月,每季度的方法
2019/08/08 Python
Python3爬虫mitmproxy的安装步骤
2020/07/29 Python
国际贸易个人求职信范文
2014/01/04 职场文书
岗位职责的构建方法
2014/02/01 职场文书
《植物妈妈有办法》教学反思
2014/02/25 职场文书
舞蹈专业求职信
2014/06/13 职场文书
上海世博会口号
2014/06/19 职场文书
2015年党性分析材料
2014/12/19 职场文书
Python实现8种常用抽样方法
2021/06/27 Python
python数字转对应中文的方法总结
2021/08/02 Python
解决Python保存文件名太长OSError: [Errno 36] File name too long
2022/05/11 Python