递归函数php啥意思,php递归函数如何用才有效?php递归函数例子
本篇介绍有关 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递归函数例子相关推荐
- python中递归函数写法_《Python入门08》你知道Python递归函数怎么写吗~~
点击上方的"小小白AI",选择"关注" 重磅知识,第一时间送达 前言 直入主题~~~ 1.什么是递归函数 前面深入介绍了如何创建和调用函数.你知道,函数可调用其 ...
- Oracle数据库体如何用才是最好用的呢?
两者的关系 1.包(Package):Oracle中的包是用来在数据库中对函数和过程进行分类的(近似于JAVA中的接口),包中的函数和过程都只需进行声明,不用给出具体的操作语句(近似于JAVA中抽象方 ...
- 如何才能轻而易举的写出递归函数
先说下我的学习方式吧 首先,我想说下我的学习方式,每个人的学习方式都是不同的,有的人悟性比较高,所以学东西比较快,但也有一部分人,学东西比较慢,哈哈,我就是那学东西比较慢的那一部分人.但我也不气馁,认 ...
- js递归函数使用介绍
所谓的递归函数就是在函数体内调用本函数. 使用递归函数一定要注意,处理不当就会进入死循环.递归函数只有在特定的情况下使用 ,比如阶乘问题 一个10以内的阶乘,js递归函数实例代码: <!DOCT ...
- python-回调函数和递归函数
https://www.toutiao.com/a6642513312263176717/ 回调函数 一个函数中的参数是另一个函数的名字. #回调函数 i=10; j=20;def myfunc(i, ...
- UA MATH577 逻辑与可计算性1 递归函数
UA MATH577 逻辑与可计算性1 递归函数 三种基础函数 三类创造可计算的新函数的方法 复合函数 Primitive Recursive Minimization 写在前面 这个系列是我上课的笔 ...
- python递归函数代码_Python递归函数
参考: 一.递归函数两大要素 --终止条件和递归方程 1.递归方程,即递归调用的方法 递归通俗的说就是在函数内部自己调用自己,如何调用就是递归方程. 以以下的sum(n)求和函数递归实现方式为例,递归 ...
- 栈和队列之仅用递归函数和栈操作逆序一个栈
import java.util.Stack;/*** recursion 递归的意思* @author chenyu* 题目:仅用递归函数和栈操作逆序一个栈,列如一次压入1.2.3.4.5 栈顶到栈 ...
- Linux C学习---递归函数
最近学习到了递归,刚开始看,真是头大,函数里面嵌套其本身,到底是怎么个流程啊? 现在,咱们先了解下递归函数的数学原理: 高中的时候就出现很多递归函数,应该是在"级数"那里的习题中出 ...
- 理解 Delphi 的类(十) - 深入方法[27] - 递归函数: 简单示例
为什么80%的码农都做不了架构师?>>> //所谓递归函数, 就是自己调用自己的函数, 先来个简单的例子:{递归调用的简单示例} procedure alert(i: Inte ...
最新文章
- 基于 Prometheus、InfluxDB 与 Grafana 打造监控平台
- 内网***测试定位技术总结
- ios学习笔记-数据持久化
- codeblocks、wxWidgets环境配置
- 分隔单词和标点符号示例
- Smart Form中四种窗口类型的区别
- php ci 表单校验,表单验证 - CodeIgniter 中文手册|用户手册|用户指南|Wiki文档
- linux 启动mongodb
- 小汤学编程之jQuery学习day01——简介、入门、选择器
- 数据结构--直接插入排序
- file 创建 txt文件
- usb网卡android驱动+win7,usb网卡万能驱动_手把手教你usb网卡驱动
- 解决微信设置字体大小对 rem 适配方式的影响
- Swift语言中的@available 和 #available
- 传奇清理服务器信息,传奇行会信息等清除问题
- 2019杭电多校第六场Snowy Smile HDU-6638
- NEXYS4_DDR迪芝伦XC7A100TCSG324-1型,VGA接口显示彩条
- 编程之路永无止境,想要与众不同你得这样做
- 面试前妹妹过世,美国男子收到谷歌的慰问信
- 7-1 顺序表的建立及遍历