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");//gfedaba
function reverse($str){
if(strlen($str)>0){
reverse(substr($str,1));
echo substr($str,0,1);
return;
}
}
reverse("abcdefg");//gfedaba
二、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");
//gfedaba
function reverse($str){
if(strlen($str)>0){
reverse(substr($str,1));
echo substr($str,0,1); return;
}
}
reverse("abcdefg");//gfedaba
php递归函数有时可以循环替代,建议当不能用循环替代时再用,因为用循环我们更容易理解,更不容易出错。 php递归函数 php支付递归函数,递归函数就是调用自己本身,这些函数特别适用于浏览动态数据结构,例如树和列表。 几乎没有web应用程序要求使用复杂的数据结构。
例子:
复制代码 代码示例:0) reverse_r(substr($str,1)); echo substr($str,0,1); return; } ?>
这个程序清单中实现两个函数,这两个函数都可以相反的顺序打印字符串的内容 函数reversr_r是通过递归实现的,而函数reverse_i()是通过循环实现的。
以上就是php递归函数怎么用才有效?php递归函数典型例子 的内容,更多相关内容请关注PHP中文网(www.php.cn)!
相关内容推荐:
本文原创发布php中文网,转载请注明出处,感谢您的尊重!
php如何优化递归函数,php递归函数怎么用才有效?php递归函数典型例子相关推荐
- c语言递归函数检测回文,在C中使用递归函数的回文测试
我试图编写用于测试字符串的程序,如果它是回文或不是,但我总是得到输出,因为它不是一个.我的代码有什么问题?在C中使用递归函数的回文测试 #include #include int is_palindr ...
- python编写递归函数m(i)计算以下级数_编写递归函数getpower
编写递归函数 GetPower(int 实现输入输出. x, int y)计算 ... 18 日验报告日期 2014 年 4 月 19 日告退发 ( 订正 . 重做 ) 教师审批签字 一.实验目的 学 ...
- python中的递归函数是什么_讲解Python中的递归函数
{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...
- 基于Kubernetes支撑的项目,环境规划,构建优化,监控报警怎么做才好?
前言 随着云计算技术的不断发展,容器和Kubernetes已经成为云原生应用的基石,容器的周边生态也日益成熟,微服务.服务网格.DevOps等技术相继涌现. 容器的出现,推动了软件开发.测试.部署.运 ...
- 转载自笨木头的Cocos2d-x Auto-batching分析
今天早晨学习cpp-tests物理引擎实例,顺便学习了Cocos2d-x 3.0新引入的Auto-batching技术.期间,在结合秦春林著作有关论述的同时学习了笨木头同学的文章,完整引用如下: 近两 ...
- IBM WebSphere 开发者技术期刊: 最重要的 Java EE 最佳实践
级别: 初级 Keys Botzum, 高级技术人员 , IBM Kyle Brown, 杰出工程师, IBM Ruth Willenborg (rewillen@us.ibm.com), 高级技术人 ...
- python静态递归函数_Python递归函数相关
函数中调用其他函数是解决实际问题中常用方法,递归函数便是函数在运行过程中调用自身的函数.它像是循环的另一种表达方式,不过相较于写循环,递归函数封装性较好.可读性较强.在解决一些循环问题时,使用递归函数 ...
- python递归函数例题_递归案例python
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 而对应的中文翻译 "递归" 却表达了两个意思:"递 ...
- 【Python】什么是递归函数?
目录 1.递归函数的概念 2.递归函数的特点 3.递归函数解决实际问题 3.1.计算n!=1*2*3...*n 3.2.斐波那契数列 0, 1, 1, 2, 3, 5, 8, 13, 21, ··· ...
- Python非单向递归函数如何返回全部结果?这个经典的背包问题给出了答案
递归( recursion)是一种神奇的编程技巧,可以大幅简化代码,使之看起来更加简洁.然而递归设计却非常抽象,不容易掌握.通常,我们都是自上而下的思考问题, 递归则是自下而上的解决问题--这就是递归 ...
最新文章
- 人工脑连接体:类脑人工智能的奇点时刻来临
- 企业分布式微服务云SpringCloud SpringBoot mybatis (九)Spring Boot多数据源配置与使用(JdbcTemplate支持)...
- 学python多长时间能够精通-学Python多长时间?老男孩Python技术培训
- 程序编码应保持良好的规范(C#)
- html伸缩布局,CSS3 伸缩布局(一)
- arduino编程时加{}报错_使用Arduino开发板时最常见的10个错误
- 解决jQuery中dbclick事件触发两次click事件
- 不确定单机械臂的自适应反步控制建模与仿真
- 【机器学习】21个机器学习面试问答
- AD18 SCH Filter面板——智能查找功能
- Java调用支付宝身份认证接口
- 网络管理——直接网络管理规范
- Tesseract-OCR引擎的安装
- python教程 -- 廖雪峰
- 等腰杨辉三角C语言实现
- Nginx——缓存配置
- 恢复误删sqlserver数据库表中的数据
- ubuntu 外接VGA显示 不能调整为正确的分辨率
- 西安交通大学城市学院计算机课本,西安交通大学城市学院计算机系赴陕西科技大学进行专业课“课程思政”教学交流...
- 判断文件编码格式是否是UTF-8还是GBK格式
热门文章
- 最长回文字串--动态规划
- Spring对 JDBC 的支持,JdbcTemplate类的使用
- 第一百零六节,JavaScript变量作用域及内存
- Linux下编译安装redis,详细教程
- 从此使用linux系统,但是QQ是必不可少的!!该篇文章方法成功!!!已验证!!!!!...
- 为什么要有环回路由(zz)
- java 创建消息队列_java - 在Java中动态创建异步消息队列 - 堆栈内存溢出
- 对于相同Bean,在父应用上下文中定义的切面,在子应用上下文中会生效吗?
- 并发编程常见面试题总结三
- numpy.argmin 使用