本文介绍了php递归函数中返回值的正确用法,php递归函数中使用return返回值需要注意哪些问题,以加深对php递归函数的理解。

php递归函数返回值

例子,php递归函数返回值写法。

代码示例:

0) {

$n--;

return sum($n,$s);

}else{

return $s;

}

}

$sum = 0;

echo sum(5,$sum);

在使用php递归函数时,会遇到php递归返回值时出现的问题。

通常问题都出在递归函数的返回值上。

最初的php递归函数的例子:

代码示例:

以上代码中,else里面是有问题的。在这里执行的test没有返回值。

虽然满足条件$i < 3时 return $i整个函数还是不会返回值的。

对以上php递归返回值函数做如下修改:

代码示例:

< ?php

function test($i)

{

$i -= 4;

if($i < 3)

{

return $i;

}

else

{

return test($i); //增加return, 让函数返回值

}

}

echo test(30);

?>

二、对php递归函数的理解

递归函数为自调用函数,在函数体内直接或间接自己调用自己,但需要设置自调用的条件,若满足条件,则调用函数本身,若不满足则终止本函数的自调用,然后把目前流程的主控权交回给上一层函数来执行。

例子:

代码示例:

0){

test($n-1);

}else{

echo "";

}

echo $n." &nbsp"

}

test(2)

?>

这个例子最终的输出结果是2 1 00 1 2

分析:

第一步,执行test(2),echo 2,然后因为2>0,执行test(1), 后面还有没来得及执行的echo 2

第二步,执行test(1),echo 1,然后因为1>0,执行test(0),同样后面还有没来得及执行的 echo 1

第二步,执行test(0),echo 0,执行test(0),echo 0, 此时0>0的条件不满足,不在执行test()函数,而是echo “”,并且执行后面的 echo 0

此时函数已经不再调用自己,开始将流程的主控权交回给上一层函数来执行,也就是开始执行刚刚所有test()函数没来得及输出的最后一个echo,0的一层是1也就是输出1 1的上一层是2 也就是输出2 2没有山一层 所以呢 输出的内容就是2 1 00 1 2

三、php递归函数中使用return返回值需要注意哪些问题?

php递归函数中使用return时无法正确返回想要的值怎么办?

例子:

代码示例:

function test($i){

$i-=4;

if($i<3){

return $i;

}else{

test($i);

}

}

echotest(30);

以上代码在运行进,这个函数的else里面是有问题的。在这段代码里面执行的结果是没有返回值的。

虽然满足条件 $i<3 时return $i整个函数还是不会返回值的。

对上面的PHP递归函数,做如下修改:

代码示例:

function test($i){

$i-=4;

if($i<3){

return $i;

}else{

return test($i);//增加return,让函数返回值

}

}

echotest(30);

如此,在调用php递归函数时,就可以返回需要的值了。

php中的递归调用函数返回值,深入理解php递归函数返回值的正确用法相关推荐

  1. java中的递归函数调用函数_Java中函数的递归调用

    说到递归,java中的递归和C语言中也是很相似的,在Java中,递归其实就是利用了栈的先进后出的机制来描述的. public class HelloWorld { public static void ...

  2. python函数可以递归调用吗_递归调用函数

    我有10张,20张,50张钞票,当我需要支付任何金额时,我需要找到最好的组合.例如,当我需要付7英镑时,我会付5英镑和2英镑的钞票 我有一个函数可以计算这个.但我需要运行同一个函数3到4次,如下所示. ...

  3. scala 函数调用_在Scala中按名称调用函数

    scala 函数调用 函数按名称调用 (Functions call by name ) By default, the method of parameter passing in a progra ...

  4. c语言递归调用次数,C语言中的递归调用

    递归:这个词简直是大多数初学者的噩梦,当初学者在接触递归时,简直是一头雾水,很难理解,这是正常的,因为我们都不是天才,主要原因呢还是归功于不理解递归在底层到底发生了什么,而是只看表面,当然就很难明白递 ...

  5. as3中使用字符串调用函数。

    大家都知道,主场景中的某个影片剪辑mm0,可以通过this["mm"+0]去访问. 是不是可以通过字符串去调用函数呢? 答案是肯定的, var myfunc:String = &q ...

  6. JavaScript中使用字符串调用函数

    JavaScript中有一种函数的调用方法:使用函数名的字符串来调用 function forTimeout(x, y){ alert(x + y);}function delay(x , y , t ...

  7. vue中v-if如何调用函数?

    v-if  是显示隐藏节点,它的值是Boolean 在函数中如何调用? <div v-if="isShow()"></div> methods属性这样配置: ...

  8. python调用函数怎么错_在Python中从类调用函数时参数数目错误

    我试图用python编写一个遗传算法的实现.上面写着我用两个参数来调用它,而只有一个是允许的,但我肯定我不允许.在 以下是相关代码:class GA: def __init__(self, best, ...

  9. python 函数调用列表_python – 根据列表中的字符串调用函数

    Terms: talib: Technical Analysis Library (stock market indicators, charts etc) CDL: Candle or Candle ...

  10. java用递归删除文件夹_Java中通过递归调用删除文件夹下所有文件

    摘自 : http://blog.sina.com.cn/s/blog_79333b2c0100xiu4.html import java.io.File; public class FileTest ...

最新文章

  1. 怎么进入mysql workspace_MySQL 继续-- Win7 安装及后续工作
  2. 2022-03-18 今日工作
  3. 物理引擎demo (4) —— 力、关节和马达
  4. SpringMVC上传文件以流方式判断类型附常用类型
  5. [Erlang 0034] Erlang iolist
  6. 免费科研数据集大搜索,来源于互联网~
  7. 钻石2 D2 让你的diamond2待机2天,甚至2天以上的方法(绝对不是购买电池)
  8. Linux系统下如何实现文件系统配额
  9. JS编程建议——72:惰性载入函数
  10. canvas 从ondraw中获取_C# 在PDF中绘制多样风格的文本
  11. 计算机组成与结构学的是什么内容,计算机组成与体系结构教学大纲.doc
  12. 9008刷机教程oppo_OPPO和Realme手机刷机后内部存储不足,无法下载软件
  13. elastichd的使用教程_ElasticHD
  14. Adams 线性多步积分器(一)
  15. 理解分布函数(概率论)
  16. Verilog中$finish、$stop的使用与区别
  17. 实现支付功能并生成二维码
  18. Raptor-数字分解
  19. python常用小脚本总结
  20. 计算机信息处理员证书可以在东莞入户,东莞入户办理:人才入户东莞有哪些职称考?可靠吗?...

热门文章

  1. iOS录音及播放全解
  2. 精心挑选的100多种机器学习数据集
  3. Python模块下载常用地址
  4. 自动化测试工具-Airtest
  5. 自制1寸照片及打印排版
  6. 九宫格数独模型设计(随机生成题目)
  7. 通讯录 C语言分类,C语言 通讯录
  8. 基本存款账户编号怎么查_基本存款账户编号是行号吗?
  9. 《运筹学》CSU作业答案
  10. 吴恩达深度学习第一章第二周编程作业