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文件向另一个地址post数据,不用表单和隐藏的变量的
Mar 06 PHP
可定制的PHP缩略图生成程式(需要GD库支持)
Mar 06 PHP
通过PHP修改Linux或Unix口令的方法分享
Jan 30 PHP
php插入中文到sqlserver 2008里出现乱码的解决办法分享
Jul 19 PHP
php实现文件编码批量转换
Mar 10 PHP
用 Composer构建自己的 PHP 框架之构建路由
Oct 30 PHP
php微信公众平台开发之获取用户基本信息
Aug 17 PHP
dvwa+xampp搭建显示乱码的问题及解决方案
Aug 23 PHP
Smarty模板简单配置与使用方法示例
May 23 PHP
PHP的AES加密算法完整实例
Jul 20 PHP
Laravel最佳分割路由文件(routes.php)的方式
Aug 04 PHP
php读取XML的常见方法实例总结
Apr 25 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运行出现Call to undefined function curl_init()的解决方法
2010/11/02 PHP
兼容性最强的PHP生成缩略图的函数代码(修改版)
2011/01/18 PHP
基于PHP一些十分严重的缺陷详解
2013/06/03 PHP
基于PHP异步执行的常用方式详解
2013/06/03 PHP
Codeigniter上传图片出现“You did not select a file to upload”错误解决办法
2014/06/12 PHP
一张表搞清楚php is_null、empty、isset的区别
2015/07/07 PHP
Yii2主题(Theme)用法详解
2016/07/23 PHP
php框架CodeIgniter主从数据库配置方法分析
2018/05/25 PHP
Aster vs KG BO3 第二场2.19
2021/03/10 DOTA
Prototype使用指南之hash.js
2007/01/10 Javascript
解析John Resig Simple JavaScript Inheritance代码
2012/12/03 Javascript
JQuery对表格进行操作的常用技巧总结
2014/04/23 Javascript
JS使用cookie实现DIV提示框只显示一次的方法
2015/11/05 Javascript
javascript表单控件实例讲解
2016/09/13 Javascript
让编辑器支持word复制黏贴、截屏的js代码
2016/10/17 Javascript
select下拉框插件jquery.editable-select详解
2017/01/22 Javascript
ES6新增数据结构WeakSet的用法详解
2017/08/07 Javascript
微信小程序之发送短信倒计时功能
2017/08/30 Javascript
Laravel整合Bootstrap 4的完整方案(推荐)
2018/01/25 Javascript
jquery-ui 进度条功能示例【测试可用】
2019/07/25 jQuery
微信小程序实现横向滚动导航栏效果
2019/12/12 Javascript
Python中字符编码简介、方法及使用建议
2015/01/08 Python
Python中的日期时间处理详解
2016/11/17 Python
Python多线程操作之互斥锁、递归锁、信号量、事件实例详解
2020/03/24 Python
python 实现逻辑回归
2020/12/30 Python
css3实现3d旋转动画特效
2015/03/10 HTML / CSS
用CSS3实现背景渐变的方法
2015/07/14 HTML / CSS
计算机系毕业生推荐信
2013/11/06 职场文书
小学生操行评语
2014/04/22 职场文书
2014乡镇党委副书记对照检查材料思想汇报
2014/10/09 职场文书
单位同意报考证明
2015/06/17 职场文书
2016国庆节活动宣传语
2015/11/25 职场文书
2019终止劳动合同协议书最新范本!
2019/07/09 职场文书
上手简单,功能强大的Python爬虫框架——feapder
2021/04/27 Python
【海涛dota】偶遇拉娜娅 质量局德鲁伊第一视角解说
2022/04/01 DOTA
Android存储中最基本的文件存储方式
2022/04/30 Java/Android