php 递归[通俗易懂]

php 递归[通俗易懂]php 递归

大家好,又见面了,我是你们的朋友全栈君。

递归是一种函数调用自身的机制。

递归必须要有边界条件,也就是递归出口(退出递归)

递归前进段和递归返回段,也就是最后得到的值

当边界条件不满足时,递归前进;当边界条件(递归出口)满足时,递归返回。

PHP的递归非常消耗性能,故而在PHP中尽量避免使用递归

1..写一个求和的函数 输入参数n,可以求到1+2+3+…+n的和

1     function sum($n) {
2     if($n>1) {
3     return $n+sum($n-1);
4     } else {
5     return 1;
6     }
7     }
8     echo sum(100);   //1到100的和

2.一个多维数组,如果单元值为数字,则把其值修改为原来的 2 倍. 如 array(1,2,’b’,array(3,’c’,array(4,5))); 变成 array(2,4,’b’,array(6,’c’,array(8,10)));

 1 $arr = array(1,2,3,array('c',4,array(5,6)));
 2 function multArr($arr) {
 3 foreach($arr as $k=>$v) {
 4 //如果值是int 则加倍
 5 if(is_int($v)) {
 6 $arr[$k] = $v*2;
 7 }else if(is_array($v) ){
 8 //如果值是数组
 9 $arr[$k] = multArr($v);
10 }
11 }
12 return $arr;
13 }
14 print_r(multArr($arr));

3.写递归函数,计算所有单元的和

 1 $arr = array(1,2,3,array(4,array(5,6)));
 2 function sumHe($arr) {
 3 $i = 0;
 4 foreach($arr as $k=>$v) {
 5 if(is_int($v)) {
 6 $i = $i+$v;
 7 } else if(is_array($v)) {
 8 $i +=sumHe($v);
 9 }
10 }
11 return $i;
12 }
13 echo sumHe($arr);

 

转载于:https://www.cnblogs.com/myzxh/p/9753151.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/107274.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 直接加QQ好友的链接或会话的方法

    出自本博客:qq_2300688967原文链接:https://blog.csdn.net/qq_2300688967/article/details/52162230下面是两种方法,一种直接会话,一种添加好友,只需将本人的QQ改成自己的就行了(1)下面这个代码,可直接临时会话tencent://message/?Menu=yes&uin=2300688967&…

    2022年4月9日
    129
  • python中setattr用法_python中hasattr()、getattr()、setattr()函数的使用

    python中setattr用法_python中hasattr()、getattr()、setattr()函数的使用引言 在阅读源码时 有很多简写的形式 其中一个比较常用的就是 getattr 用来调用一个类中的变量或者方法 相关联的 hasattr getattr setattr 函数的使用也一并学习了一下 正文 1 hasattr object name 判断 object 对象中是否存在 name 属性 当然对于 python 的对象而言 属性包含变量和方法 有则返回 True 没有则返回 False 需要注

    2025年11月26日
    5
  • java栈内存不足

    java栈内存不足前置条件:使用命令java -Xmx1g-Xms1g-Xmn256m-XX:PermSize=128m-Xss256k-XX:+DisableExplicitGC-XX:+UseConcMarkSweepGC-XX:+CMSParallelRemarkEnabled-XX:+UseCMSCompactAtFullCollection-XX:LargePageSizeInByte

    2025年9月20日
    7
  • Qt树形控件QTreeView使用1——节点的添加删除操作[通俗易懂]

    Qt树形控件QTreeView使用1——节点的添加删除操作[通俗易懂]QTreeView和QStandardItemModel的使用QtreeView是ui中最常用的控件,Qt中QTreeWidget比QTreeView更简单,但没有QTreeView那么灵活(QTreeWidget封装的和MFC的CTreeCtrl很类似,没有mvc的特点)。1. QStandardItemModel在QTreeView中的使用使用QTree

    2022年6月5日
    410
  • 基于spark的数据采集平台

    基于spark的数据采集平台数据采集平台管理端https://github.com/zhaoyachao/zdh_web数据采集平台服务https://github.com/zhaoyachao/zdh_server平台介绍数据采集,处理,监控,调度,管理一体化平台具体介绍请看github连接中的readme文档

    2022年6月10日
    33
  • hdu 4912 Paths on the tree(lca+馋)

    hdu 4912 Paths on the tree(lca+馋)

    2022年1月11日
    34

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号