本篇介绍有关 php递归函数的用法,同时分享几个 php 递归函数的例子,在 php 编程中,使用递归进行函数调用很常见,递归函数用的好,可以提高代码效率,通过例子学习 php 递归函数的使用。

一、什么是递归函数?

一个函数在它的函数体内调用它自身称为递归调用。 这种函数称为递归函数。

php 递归函数与非递归函数有什么区别?

例一:使用静态变量

代码示例:

function test(){

static $dig=0;

if($dig++<10){

echo $dig;

test();

}

}

test();//12345678910

例二:使用递归函数和循环实现字符串逆转排列

代码示例:

function unreverse($str){

for($i=1;$i<=strlen($str);$i++){

echo substr($str,-$i,1);

}

}

unreverse("abcdefg");//gfedcbc

function reverse($str){

if(strlen($str)>0){

reverse(substr($str,1));

echo substr($str,0,1);

return;

}

}

reverse("abcdefg");//gfedcbc

二、php 递归函数使用实例

php 递归使用示例(php 递归函数),包括递归获得角色 ID 字符串、递归获取级联角色信息数组、通过父角色的 id 获取子角色信息。

例子:

代码示例:

//递归获得角色 ID 字符串

function explodeRole($roleObj, &$resultStr){

if(0 < count($roleObj->childRoleObjArr)){

foreach($roleObj->childRoleObjArr as $childRoleObj){

if('' == $resultStr){

$resultStr .= "{$childRoleObj->id}";

}else{

$resultStr .= ", {$childRoleObj->id}";

}

explodeRole($childRoleObj, $resultStr);

}

}

}

//递归获取级联角色信息数组

function makeRoleRelation(&$roleObjArr){

foreach($roleObjArr as $item){

$item->childRoleObjArr = getRoleObjArrByParentId($item->id);

if(0 < count($item->childRoleObjArr)){

makeRoleRelation($item->childRoleObjArr);

}

}

}

//通过父角色的 id 获取子角色信息

function getRoleObjArrByParentId($parentid){

$operCOGPSTRTSysRole = new COGPSTRTSysRole();

$operCOGPSTRTSysRole->setColumn($operCOGPSTRTSysRole->getAllColumn());

$operCOGPSTRTSysRole->setWhere("parentroleid={$parentid}");

$roleObjArr = $operCOGPSTRTSysRole->convResult2ObjArr($operCOGPSTRTSysRole->selectTable());

return isset($roleObjArr)?$roleObjArr:array();

}

php 递归函数用法

例 1:使用静态变量实现递归。

代码示例:

function test(){

static $dig=0;

if($dig++<10){

echo $dig;

test();

}

}

test();//12345678910

例 2:使用递归函数和循环实现字符串逆转排列。

代码示例:

function unreverse($str){

for($i=1;$i<=strlen($str);$i++){

echo substr($str,-$i,1);

}

}

unreverse("abcdefg");

//gfedcbc

function reverse($str){

if(strlen($str)>0){

reverse(substr($str,1));

echo substr($str,0,1); return;

}

}

reverse("abcdefg");//gfedcbc

php 递归函数有时可以循环替代,建议当不能用循环替代时再用,因为用循环我们更容易理解,更不容易出错。 php 递归函数 php 支付递归函数,递归函数就是调用自己本身,这些函数特别适用于浏览动态数据结构,例如树和列表。 几乎没有 web 应用程序要求使用复杂的数据结构。

例子:

复制代码 代码示例:

0) reverse_r(substr($str,1)); echo substr($str,0,1); return; } ?>

这个程序清单中实现两个函数,这两个函数都可以相反的顺序打印字符串的内容 函数 reversr_r 是通过递归实现的,而函数 reverse_i()是通过循环实现的。

女程序员博客 , 版权所有丨本站采用BY-NC-SA协议进行授权 , 转载请注明php 递归函数如何用才有效?php 递归函数例子!

【声明】:本博客仅为分享信息,不参与任何交易,也非中介,所有内容仅代表个人观点,均不作直接、间接、法定、约定的保证,读者购买风险自担。一旦您访问本博客,即表示您已经知晓并接受了此声明通告。

【关于安全】:任何 IDC 都有倒闭和跑路的可能,备份永远是最佳选择,服务器也是机器,不勤备份是对自己极不负责的表现,请保持良好的备份习惯。

递归函数php啥意思,php递归函数如何用才有效?php递归函数例子相关推荐

  1. python中递归函数写法_《Python入门08》你知道Python递归函数怎么写吗~~

    点击上方的"小小白AI",选择"关注" 重磅知识,第一时间送达 前言 直入主题~~~ 1.什么是递归函数 前面深入介绍了如何创建和调用函数.你知道,函数可调用其 ...

  2. Oracle数据库体如何用才是最好用的呢?

    两者的关系 1.包(Package):Oracle中的包是用来在数据库中对函数和过程进行分类的(近似于JAVA中的接口),包中的函数和过程都只需进行声明,不用给出具体的操作语句(近似于JAVA中抽象方 ...

  3. 如何才能轻而易举的写出递归函数

    先说下我的学习方式吧 首先,我想说下我的学习方式,每个人的学习方式都是不同的,有的人悟性比较高,所以学东西比较快,但也有一部分人,学东西比较慢,哈哈,我就是那学东西比较慢的那一部分人.但我也不气馁,认 ...

  4. js递归函数使用介绍

    所谓的递归函数就是在函数体内调用本函数. 使用递归函数一定要注意,处理不当就会进入死循环.递归函数只有在特定的情况下使用 ,比如阶乘问题 一个10以内的阶乘,js递归函数实例代码: <!DOCT ...

  5. python-回调函数和递归函数

    https://www.toutiao.com/a6642513312263176717/ 回调函数 一个函数中的参数是另一个函数的名字. #回调函数 i=10; j=20;def myfunc(i, ...

  6. UA MATH577 逻辑与可计算性1 递归函数

    UA MATH577 逻辑与可计算性1 递归函数 三种基础函数 三类创造可计算的新函数的方法 复合函数 Primitive Recursive Minimization 写在前面 这个系列是我上课的笔 ...

  7. python递归函数代码_Python递归函数

    参考: 一.递归函数两大要素 --终止条件和递归方程 1.递归方程,即递归调用的方法 递归通俗的说就是在函数内部自己调用自己,如何调用就是递归方程. 以以下的sum(n)求和函数递归实现方式为例,递归 ...

  8. 栈和队列之仅用递归函数和栈操作逆序一个栈

    import java.util.Stack;/*** recursion 递归的意思* @author chenyu* 题目:仅用递归函数和栈操作逆序一个栈,列如一次压入1.2.3.4.5 栈顶到栈 ...

  9. Linux C学习---递归函数

    最近学习到了递归,刚开始看,真是头大,函数里面嵌套其本身,到底是怎么个流程啊? 现在,咱们先了解下递归函数的数学原理: 高中的时候就出现很多递归函数,应该是在"级数"那里的习题中出 ...

  10. 理解 Delphi 的类(十) - 深入方法[27] - 递归函数: 简单示例

    为什么80%的码农都做不了架构师?>>>    //所谓递归函数, 就是自己调用自己的函数, 先来个简单的例子:{递归调用的简单示例} procedure alert(i: Inte ...

最新文章

  1. 基于 Prometheus、InfluxDB 与 Grafana 打造监控平台
  2. 内网***测试定位技术总结
  3. ios学习笔记-数据持久化
  4. codeblocks、wxWidgets环境配置
  5. 分隔单词和标点符号示例
  6. Smart Form中四种窗口类型的区别
  7. php ci 表单校验,表单验证 - CodeIgniter 中文手册|用户手册|用户指南|Wiki文档
  8. linux 启动mongodb
  9. 小汤学编程之jQuery学习day01——简介、入门、选择器
  10. 数据结构--直接插入排序
  11. file 创建 txt文件
  12. usb网卡android驱动+win7,usb网卡万能驱动_手把手教你usb网卡驱动
  13. 解决微信设置字体大小对 rem 适配方式的影响
  14. Swift语言中的@available 和 #available
  15. 传奇清理服务器信息,传奇行会信息等清除问题
  16. 2019杭电多校第六场Snowy Smile HDU-6638
  17. NEXYS4_DDR迪芝伦XC7A100TCSG324-1型,VGA接口显示彩条
  18. 编程之路永无止境,想要与众不同你得这样做
  19. 面试前妹妹过世,美国男子收到谷歌的慰问信
  20. 7-1 顺序表的建立及遍历

热门文章

  1. 机器学习——数据集预处理(数据查看和空值处理)
  2. 如何自己开发一个Android APP(1)——环境配置
  3. python安装模块方法_Python模块安装方法
  4. python房地产成本管理软件_大型房地产成本管理软件
  5. 【antd 3.x】upload上传组件预览pdf格式文件和下载ofd格式文件
  6. 路径规划——RRT算法实现
  7. 集成海康威视Sadp SDK实现获取设备参数配置
  8. cad尺寸标注快捷键_CAD中还能这样快速标注尺寸?怪不得同事天天准时下班
  9. 计算机电子书 2019 BiliDrive 备份
  10. Linux下黑客帝国代码雨