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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Python实验报告二

    Python实验报告二安徽工程大学Python程序设计班级:物流192姓名:唐家豪学号:3190505234成绩:日期:2020/3/5指导老师:修宇【实验名称】:顺序结构程序设计【实验目的】(1)掌握数

    2022年7月6日
    21
  • ideal激活码(最新序列号破解)

    ideal激活码(最新序列号破解),https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月18日
    65
  • win10启动文件丢失或损坏如何解决_miflash出现灾难性故障

    win10启动文件丢失或损坏如何解决_miflash出现灾难性故障原本昨天一切正确的电脑,今天打开电脑想新建一个文件夹的时候,竟无法成功,提示【一个意外错误使你无法创建该文件夹。如果你继续受到此错误,可以使用错误代码来搜索有关此问题的帮助。错误0x8000FFFF:灾难性故障】。小编真的是无奈啊,还能怎么办,上网搜索呗,出现的这个问题的磁盘还是之前的机械硬盘,以为已经把磁盘重新格盘,删除分区,重建分区,应该是没有问题了把,结果出现了几次问题都在这个机械硬盘里…

    2022年9月24日
    1
  • plsql如何配置连接oracle数据库,PLSQL连接Oracle 数据库配置详解「建议收藏」

    plsql如何配置连接oracle数据库,PLSQL连接Oracle 数据库配置详解「建议收藏」(oracle官网下载地址:http://www.oracle.com/technetwork/topics/winsoft-085727.html,下载地址2:http://download.csdn.net/detail/czw2010/5732241)2.解压instantclient-basic-win32-11.2.0.1.0并放置在oracle安装目录的product下(放置位置…

    2025年8月7日
    3
  • realme gt neo刷鸿蒙(realmegt大师探索版值得入手吗)

    realme真我GTNeo于上月31日举行了发布会,于4月8日零点正式开售。realmeGTNeo首发搭载天玑1200旗舰芯片、120Hz电竞屏等,12GB+256GB版本仅售2299元。天玑1200性能强劲,真我GTNeo可谓是两千元档最强性能旗舰手机,学生党入手也毫无压力。本次真我GTNeo瞄准年轻市场,专为Z世代量身打造。在外观上,GTNeo推出了最终幻想、骇客黑与极客…

    2022年4月15日
    251
  • 【C++ spdlog】C++ 日志库 spdlog 使用

    【C++ spdlog】C++ 日志库 spdlog 使用1、在https://github.com/gabime/spdlog处下载源文件;2、下载后解压,将得到以下文件,其中include文件夹里是所需的头文件及源码;3、新建一个C++控制台应用程序项目spdlog-test,在项目属性页VC++目录-包含目录中添加上述include路径4、添加源文件源.cpp,输入以下代码#include<iostream>#…

    2022年6月23日
    24

发表回复

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

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