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中一个控制字符串输出的函数
Oct 09 PHP
php对数组排序的简单实例
Dec 25 PHP
php 使用array函数实现分页
Feb 13 PHP
PHP生成指定随机字符串的简单实现方法
Apr 01 PHP
PHP获得数组交集与差集的方法
Jun 10 PHP
PHP中$_SERVER使用说明
Jul 05 PHP
thinkphp autoload 命名空间自定义 namespace
Jul 17 PHP
php实现与python进行socket通信的方法示例
Aug 30 PHP
PHP让数组中有相同值的组成新的数组实例
Dec 31 PHP
PHP使用两个栈实现队列功能的方法
Jan 15 PHP
PHP实现负载均衡下的session共用功能
Apr 17 PHP
php中错误处理操作实例分析
Aug 23 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
Notice: Undefined index: page in E:\PHP\test.php on line 14
2010/11/02 PHP
Thinkphp关闭缓存的方法
2015/06/26 PHP
浅谈PHP发送HTTP请求的几种方式
2017/07/25 PHP
Yii框架布局文件的动态切换操作示例
2019/11/11 PHP
用javascript将数据导入Excel示例代码
2014/09/10 Javascript
js实现飞入星星特效代码
2014/10/17 Javascript
JavaScript Sort 的一个错误用法示例
2015/03/20 Javascript
Jquery UI实现一次拖拽多个选中的元素操作
2020/12/01 Javascript
Angularjs单选改为多选的开发过程及问题解析
2017/02/17 Javascript
封装运动框架实战左右与上下滑动的焦点轮播图(实例)
2017/10/17 Javascript
JavaScript之创意时钟项目(实例讲解)
2017/10/23 Javascript
深入理解Vue 单向数据流的原理
2017/11/09 Javascript
webpack4的迁移的使用方法
2018/05/25 Javascript
vue移动端弹起蒙层滑动禁止底部滑动操作
2020/07/22 Javascript
vue.js click点击事件获取当前元素对象的操作
2020/08/07 Javascript
[46:25]DOTA2上海特级锦标赛主赛事日 - 4 败者组第五轮 MVP.Phx VS EG第二局
2016/03/05 DOTA
Python模拟登陆淘宝并统计淘宝消费情况的代码实例分享
2016/07/04 Python
利用Python批量压缩png方法实例(支持过滤个别文件与文件夹)
2017/07/30 Python
Python基于opencv的图像压缩算法实例分析
2018/05/03 Python
python list是否包含另一个list所有元素的实例
2018/05/04 Python
Python使用folium excel绘制point
2019/01/03 Python
Django 创建后台,配置sqlite3教程
2019/11/18 Python
python字典setdefault方法和get方法使用实例
2019/12/25 Python
Python 发送邮件方法总结
2020/08/10 Python
使用Html5、CSS实现文字阴影效果
2018/01/17 HTML / CSS
关于解决iframe标签嵌套问题的解决方法
2020/03/04 HTML / CSS
澳大利亚香水在线商店:City Perfume
2020/09/02 全球购物
路由表示做什么用的?在linux环境中怎么来配置一条默认路由?
2013/06/07 面试题
银行职员思想汇报
2013/12/31 职场文书
初一新生军训方案
2014/05/22 职场文书
考试作弊被抓检讨书
2014/10/02 职场文书
单位委托书
2014/10/15 职场文书
公司员工安全协议书
2014/11/21 职场文书
写给女朋友的检讨书
2015/05/06 职场文书
小马王观后感
2015/06/11 职场文书
GoFrame gredis缓存DoVar Conn连接对象 自动序列化GoFrame gredisDo/DoVar方法Conn连接对象自动序列化/反序列化总结
2022/06/14 Golang