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 相关文章推荐
PHP面向对象分析设计的经验原则
Sep 20 PHP
php数组函数序列之array_key_exists() - 查找数组键名是否存在
Oct 29 PHP
使用PHPMyAdmin修复论坛数据库的图文方法
Jan 09 PHP
php使用curl检测网页是否被百度收录的示例分享
Jan 31 PHP
11个PHPer必须要了解的编程规范
Sep 22 PHP
PHP文件上传之多文件上传的实现思路
Jan 27 PHP
微信支付开发告警通知实例
Jul 12 PHP
php使用curl实现简单模拟提交表单功能
May 15 PHP
PHP实现驼峰样式字符串(首字母大写)转换成下划线样式字符串的方法示例
Aug 10 PHP
thinkphp5.1 文件引入路径问题及注意事项
Jun 13 PHP
Laravel 5+ .env环境配置文件详解
Apr 06 PHP
PHP code 验证码生成类定义和简单使用示例
May 27 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中实现进程间通讯
2006/10/09 PHP
如何通过View::first使用Laravel Blade的动态模板详解
2017/09/21 PHP
初学Javascript的一些总结
2008/11/03 Javascript
用 Javascript 验证表单(form)中的单选(radio)值
2009/09/08 Javascript
jQuery 第二课 操作包装集元素代码
2010/03/14 Javascript
Js参数值中含有单引号或双引号问题的解决方法
2013/11/06 Javascript
基于NodeJS的前后端分离的思考与实践(五)多终端适配
2014/09/26 NodeJs
JS实现从顶部下拉显示的带动画QQ客服特效代码
2015/10/24 Javascript
JavaScript中关于iframe滚动条的去除和保留
2016/11/17 Javascript
简单谈谈ES6的六个小特性
2016/11/18 Javascript
解析js如何获取css样式
2016/12/11 Javascript
简单实现node.js图片上传
2016/12/18 Javascript
javascript容错处理代码(屏蔽js错误)
2017/01/20 Javascript
jQuery实现单击按钮遮罩弹出对话框效果(1)
2017/02/20 Javascript
nodejs搭建本地http服务器教程
2017/03/13 NodeJs
vue中实现先请求数据再渲染dom分享
2018/03/17 Javascript
基于jQuery的时间戳与日期间的转化
2019/06/21 jQuery
JavaScript交换两个变量方法实例
2019/11/25 Javascript
javascript中导出与导入实现模块化管理教程
2020/12/03 Javascript
[43:51]2018DOTA2亚洲邀请赛3月30日 小组赛B组 EG VS Secret
2018/03/31 DOTA
python中子类继承父类的__init__方法实例
2016/12/15 Python
python学习教程之使用py2exe打包
2017/09/24 Python
Python中用psycopg2模块操作PostgreSQL方法
2017/11/28 Python
Python中矩阵创建和矩阵运算方法
2018/08/04 Python
简单了解python的内存管理机制
2019/07/08 Python
Python常用数据分析模块原理解析
2020/07/20 Python
详解html5页面 rem 布局适配方法
2018/01/12 HTML / CSS
清华大学自主招生自荐信
2014/01/29 职场文书
致跳远运动员广播稿
2014/02/11 职场文书
中职生自荐信范文
2014/06/15 职场文书
2014年作风建设剖析材料
2014/10/23 职场文书
教师个人成长总结
2015/02/11 职场文书
初三化学教学反思
2016/02/22 职场文书
Vue3如何理解ref toRef和toRefs的区别
2022/02/18 Vue.js
python前后端自定义分页器
2022/04/13 Python
Win10多屏显示如何设置?Win10电脑多屏显示设置操作方法
2022/07/07 数码科技