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)
上一篇 2022年4月20日 下午6:40
下一篇 2022年4月20日 下午7:00


相关推荐

  • 使用webmagic爬取网页信息以及通过selenium进行页面元素操作

    使用webmagic爬取网页信息以及通过selenium进行页面元素操作前言本篇文章主要讲解如何使用 webmagic 技术来实现网页的爬取 以及使用 selenium 操作页面元素 实现点击 输入事件所用技术 1 webmagic 添加需要爬取的 urlSpider create newMyProcess addUrl https www cnblogs com thread 5 run 在 process 里面抓取符合条件

    2026年3月20日
    2
  • GT911 LINUX 驱动添加

    GT911 LINUX 驱动添加1.将https://download.csdn.net/download/du2005023029/11855968GT911驱动gt9xx文件夹放在Linux源码drivers/input/touchscreen下修改drivers/input/touchscreenMakefileobj-$(CONFIG_TOUCHSCREEN_GOODIX)+=…

    2022年6月17日
    36
  • 集合转数组的方法_数组的定义方式

    集合转数组的方法_数组的定义方式数组转集合在java中的数组有两种情况,一种是存放基本数据类型的数组,一种是存放对象类型的数组。对于存放对象类型的数组,直接使用Arrays.asList方法即可对于存放基本数据类型的,如果我们单纯使用Arrays.toList的方法去转换,只会得到对象类型为int[]的集合。这样子每一个元素都是一个基本数据类型数组的对象,而不是我们要存放的数据。publicstaticvoidmain([]args){ int[]a=newint[10]; for(inti=0;i<a.

    2026年1月24日
    6
  • 马尔可夫不等式、切比雪夫不等式

    马尔可夫不等式、切比雪夫不等式1 马尔可夫不等式 Markov sinequality 在概率论中 马尔可夫不等式给出了随机变量的非负函数大于或等于某个正常数 epsilon 的概率的上限下图来自 Markovinequa 下图为任一分布的概率密度函数图像图片来自 Mathematical Probabilitya 越大 阴影部分的面积越小 即概率越小使用马尔可夫不等式的条件 随机变量 XXX 为非负的 且均值是有限的下图中的

    2026年3月19日
    3
  • BMP文件解析_图片分析

    BMP文件解析_图片分析BMP文件简介BMP(全称Bitmap)是Window操作系统中的标准图像文件格式,可以分成两类:设备相关位图(DDB)和设备无关位图(DIB),使用非常广。它采用位映射存储格式,除了图像深度可选以外,不采用其他任何压缩,因此,BMP文件所占用的空间很大。BMP文件的图像深度可选lbit、4bit、8bit及24bit。BMP文件存储数据时,图像的扫描方式是按从左到右、从下到上的顺序。由于BMP文

    2025年6月16日
    6
  • 不管这些了三国杀_三国杀身份局胜率

    不管这些了三国杀_三国杀身份局胜率一、【三国杀】是一种什么卡牌游戏?如果给三国杀下一个明确的定义的话,避不开两个词“非集换式”,“桌游”。我个人对“卡牌”有三个理解,崔斯特,集换式,非集换式。崔斯特是一个说话很有腔调的性感小胡子男人。集换式,小时候的水浒卡,三国卡,注重于收藏而非游戏性(当然后来还有了战神镖)。游戏性、竞技性比较强的,游戏王,还有如日中天的炉石(似乎也不算传统意义上的了)。非集换式的,三国杀,广泛点的

    2022年7月27日
    12

发表回复

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

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