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

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

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

递归的三种常用技法:

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

一 静态变量方式

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 使用递归的三种手法相关推荐

  1. PHP实现递归的三种方法

    递归函数是我们常用到的一类函数,最基本的特点是函数自身调用自身,但必须在调用自身前有条件判断,否则无限无限调用下去.实现递归函数可以采取什么方式呢?本文列出了三种基本方式.理解其原来需要一定的基础知识 ...

  2. PHP递归的三种方式

    一.利用引用做参数 PHP 的引用允许用两个变量来指向同一个内容,例如 $a = &$b; 这意味着 $a 和 $b 指向了同一个变量.如下例子,因为 $data 使用了引用传递,所以数据会一 ...

  3. 对于二叉树三种非递归遍历方式的理解

    利用栈实现二叉树的先序,中序,后序遍历的非递归操作 栈是一种先进后出的数据结构,其本质应是记录作用,支撑回溯(即按原路线返回):因此,基于其的二叉树遍历操作深刻的体现了其特性: 若后续的输入和其前面的 ...

  4. 二叉树的三种遍历(递归与非递归) + 层次遍历

    <转载于  >>> > 二叉树是一种非常重要的数据结构,很多其他数据机构都是基于二叉树的基础演变过来的.二叉树有前.中.后三种遍历方式,因为树的本身就是用递归定义的,因此 ...

  5. 二叉树三种遍历方式的非递归实现

    树的递归实现方式很简单,下面介绍三种遍历的非递归实现. 树的遍历有个特点,那就是在处理具体问题时,绝大多数情况下是在当前循环.或函数(或是子树)的根节点来处理的,能够注意到当前根节点是如何从上个根节点 ...

  6. 求C n m(从n个数中选m个数,有多少种组合?问题)暴力—递归——回归数学公式,三种方法,层层优化!

    文章将以代码+解析(简单)的方式进行,欢迎大家的阅读! 首先,任何一个问题都是有来源的,所以请先看题(我遇到的): 暴力解法(我第一次的想法) 代码如下: #include <stdio.h&g ...

  7. 实现二叉树的三种非递归遍历算法

    [问题描述] 编写程序,实现二叉树的三种非递归遍历算法:先序非递归,中序非递归,后序非递归. [输入形式] 输入建树序列. [输出形式] 输出三种遍历序列. [样例输入] A B C # # # # ...

  8. 二叉树三种递归和非递归遍历 层序遍历

    以下为二叉树的三种遍历(中序,先序,后序)源码,和非递归遍历源码.  中序 递归遍历 public static void inorderTraversal(TreeNode root) {if(ro ...

  9. 剑指offer——复习1:二叉树三种遍历方式的迭代与递归实现

    剑指offer--复习1:二叉树三种遍历方式的迭代与递归实现 20180905更新:这个博客中的解法不是很好,看相应的LeetCode题目笔记~~~ 我感觉此博客中的说法更容易让人理解:https:/ ...

最新文章

  1. linux rust 卸载,linux宝塔面板安装rust
  2. springboot集成freemarker 配置application.properties详解
  3. 我的ubuntu8.04安装经验 (转)
  4. 递归 || 递归的相关实例练习
  5. pycharm查看方法源码
  6. 在python中可以使用if作为变量名_变量,注释,缩进,细数Python优雅风 | Python基础连载(二)...
  7. JHelpers——一个善良忠实的仆人
  8. [leetcode]Symmetric Tree
  9. LINUX内核内存管理kmalloc,vmalloc
  10. 原型和原型链的理解(通俗易懂)
  11. DNF私服搭建的利弊关系
  12. php仿it之家源码,织梦仿IT之家带wap手机版 v5.7
  13. SVO2系列之深度滤波DepthFilter
  14. java image 提取色彩通道_Java:从BufferedImage中提取Alpha通道
  15. 华为网络篇 BPDU报文格式-11
  16. free, iostat, Linux, top, uptime, vmstat
  17. C++ 关于指针变量所占内存空间大小的问题
  18. SCI 论文投稿时该如何撰写 Highlights?
  19. Linux ps state sl+是什么意思
  20. 新手必备pr 2021快速入门教程「十一」PR字幕添加

热门文章

  1. Java爬虫 爬取某招聘网站招聘信息
  2. 14个PPT资源素材网站,再也不怕做PPT了
  3. 尹同跃捧走2022中国汽车年度人物;比亚迪当选2022最佳中国品牌汽车企业 | 美通社头条...
  4. jsjquery获取url域名及参数的方法
  5. ThreeJS FBXLoader 加载3D文件,材质消失,已解决
  6. 使用UnblockNeteaseMusic播放网易云音乐客户端无版权歌曲
  7. 内存缓存(in-memory cache)
  8. 京东2021年618项目规划——附下载
  9. android校准电池,安卓手机电量校准教程
  10. fprintf函数的的用法