php递归函数中使用return的时候会碰到无法正确返回想要的值得情况,如果不明白其中的原因,很难找出错误的,就下面的具体例子来说明一下吧:

1
2
3
4
5
6
7
8
9
function test($i){
    $i-=4;
    if($i<3){
        return $i;
    }else{
        test($i);
    }
}
echo test(30);

这段代码看起来没有问题,如果不运行一下估计你也不会认为他有什么问题,及时运行起来发现有问题你也不一定知道哪里有问题,但其实这个函数的else里面是有问题的。在这段代码里面执行的结果是没有返回值的。

所以虽然满足条件 $i<3 时return $i整个函数还是不会返回值的。因此对上面的PHP递归函数可做如下修改:

1
2
3
4
5
6
7
8
9
function test($i){
    $i-=4;
    if($i<3){
        return $i;
    }else{
        return test($i);//增加return,让函数返回值
    }
}
echo test(30);

转载于:https://www.cnblogs.com/as3lib/p/6830881.html

php递归函数return会出现无法正确返回想要值的情况相关推荐

  1. 返回变量内容的错误示例和正确返回的4种方法

    正确返回的4种方法: 将要返回的变量设置为全局变量,所以退出函数时不会被销毁 返回一个局部静态变量,所以退出函数时不会被销毁 使用实参获取变量内容,因为实参是在函数外创建的,所以退出函数时不会被销毁 ...

  2. ECMAScript6面对大于0xFFFF的Unicode字符如何正确返回长度

    一.match() 1.定义 match()方法用于检索字符串内指定(字符串或正则)的值,返回指定值的数组,若找不到,返回null. 2.语法 str.match(searchvalue) str.m ...

  3. [转载] Java中如何在方法中return返回多个值

    参考链接: 用Java返回多个值 今天在学习Java,做编程题练练手的时候,看到了这一题.  本身题目难度不大,但是我在想题目要求返回两个值,return只能返回一个值,我该怎么来实现呢? 我想到了一 ...

  4. try catch finally return的执行顺序与返回值探究

    下午看了一下百度文库中下载下来的java笔试题,其中一道就是关于这个问题的,所以写了个测试程序验证了一下,另外具体的理论知识搜罗了网上的资料. 测试程序如下: package com.andy.cod ...

  5. python自定义函数中return可以返回多个值_python函数return返回多个值

    在函数中一旦使用return,那么函数就会停止往下执行!但是,我们有时候需要函数返回多个值,怎么实现呢?其实python的return可以返回多个值,而且Python 会自动将多个返回值封装成元组. ...

  6. WebAPi之SelfHost自创建证书启动Https疑难解惑及无法正确返回结果

    前言 话说又来需求了,之前对于在SelfHost中需要嵌套页面并操作为非正常需求,这回来正常需求了,客户端现在加了https,老大过来说WebAPi访问不了了,这是什么情况,我去试了试,还真是这个情况 ...

  7. Math.abs为Integer.Min_VALUE返回错误的值

      Math.abs为Integer.Min_VALUE返回错误的值 这段代码: System.out.println(Math.abs(Integer.MIN_VALUE)); 回报-2147483 ...

  8. python如何返回多个值_python- 如何返回多个值 | 学步园

    如何写一个返回多个值的函数 函数的return 语句只能返回一个值,可以是任何类型. 因此,我们可以"返回一个 tuple类型,来间接达到返回多个值 ". 例:   x 除以 y ...

  9. Python学习入门基础教程(learning Python)--2.3.5Python返回多个值问题

    本节主要学习Python的函数是如何同时返回多个值的问题. 在学习Python的时候惊奇的发现,Python的函数可以同时返回多个值,很有意思. [python]view plaincopy #def ...

最新文章

  1. 你已经是个成熟的表格,该学会NLP了
  2. Android在OnCreate中获取控件的宽度和高度
  3. LCD控制器与帧率、刷新率的关系分析
  4. 解决调用HttpContext类
  5. 一篇文章彻底说清JS的深拷贝/浅拷贝
  6. python终端指令大全_使用python模拟命令行终端的示例
  7. 王道计算机考研课件,王道考研计算机组成原理课件ppt
  8. python堆排序算法_Python算法学习之堆和堆排序
  9. 修改Android中的文件权限
  10. 用户节点cdn有什么用处
  11. Python学习(六) Python数据类型:字典(重要)
  12. 动态规划时间复杂度_算法分析与设计之动态规划
  13. UCF101动作识别数据集
  14. STM32硬件剖析(STM32F407 定时器功能引脚分配)
  15. UI基本控件(一):UIScrollView
  16. 在直流电源(Vcc)和地之间并接电容的作用
  17. 实现Typora多端同步
  18. Qgis教程3:数据美化
  19. oracle database express database,安装Oracle Database Express Edition 11g时出现问题
  20. 海外版抖音TikTok如何运营?

热门文章

  1. 三维比例变换学习(WPF演示)
  2. win32 断言函数和转换到COFF期间失败错误
  3. HashSet 与TreeSet和LinkedHashSet的区别
  4. python 简易计算器(只能计算加减乘除和括号)
  5. 一个只有十行的精简MVVM框架(下篇)
  6. reactNative 计算时间差
  7. Python之创建单元素tuple
  8. 教程-经典Delphi教程网
  9. [翻译]Silverlight2 RC版本发布
  10. C++--深入分析MFC文档视图结构(项目实践)