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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Python数字/字符串补零操作[通俗易懂]

    Python数字/字符串补零操作[通俗易懂]字符串补零可以使用zfill()函数来给字符串补零>>>str=”123″>>>print(str.zfill(8))00000123还能把整数转化成字符来使用zfill()补零>>>num=123>>>print(str(num).zfill(8))00000123数字补零对于数字可以使用格式化的方式来进行补零:>>>number=123>>&

    2022年10月12日
  • css3实现光标悬浮滚动菜单

    效果:http://hovertree.com/texiao/css3/21/本文所用到的CSS知识请点击效果展示也中第一和第二个链接。代码:转自:http://hovertree.com/h/bj

    2021年12月24日
  • 两数之和c语言实现[通俗易懂]

    两数之和c语言实现[通俗易懂]int*twoSum(int*nums,intnumsSize,inttarget,int*returnSize){inti=0,j=0;*returnSize=2;int*a=(int*)malloc(sizeof(int)*2);for(i=0;i<numsSize;i++)…

  • pfx证书解析

    pfx证书解析从pfx中获取CA证书opensslpkcs12-intest.pfx-nodes-outserver.pem输入证书密码,提取公钥opensslx509-inserver.pem-outpublic.cer提取私钥opensslrsa-inserver.pem-outprivate.key

  • rabbitmq集群搭建_mongodb集群搭建

    rabbitmq集群搭建_mongodb集群搭建docker单容器部署创建桥接网络,用于容器间通信$dockernetworkcreatemq-network首先启动3个rabbitmq容器$dockerrun–namerabbit01\ -eRABBITMQ_SERVER_ADDITIONAL_ERL_ARGS=”-setcookieCOUBJLKLQCIAPKIQZGGJ”\ –hostnamerabbit01–networkmq-network\ -p5672:5672-p1567

  • 单射(或称单变换)、双射与满射

    单射(或称单变换)、双射与满射单射(或称单变换)、双射与满射原文链接:http://www.cnblogs.com/wanghetao/archive/2012/03/16/2400619.html数学上,单射、满射和双射指根据其定义域和陪域的关联方式所区分的三类函数。单射:指将不同的变量映射到不同的值的函数。满射:指陪域等于值域的函数。即:对陪域中任意元素,都存在至少一个定义域中的元素与之对应。双射(

发表回复

您的电子邮箱地址不会被公开。

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