• 技术文章 >后端开发 >PHP问题

    php中递归函数是啥意思

    青灯夜游青灯夜游2022-05-31 12:01:15原创474

    在php中,递归函数指的是自调用函数,也就是函数在函数体内部直接或间接地自己调用自己;使用递归函数时,需要在函数体中附加一个判断条件,以判断是否需要继续执行递归调用,当条件满足时会终止函数的递归调用。

    php入门到就业线上直播课:进入学习

    本教程操作环境:windows7系统、PHP7.1版、DELL G3电脑

    递归函数即自调用函数,也就是函数在函数体内部直接或间接地自己调用自己。需要注意的是使用递归函数时通常会在函数体中附加一个判断条件,以判断是否需要继续执行递归调用,当条件满足时会终止函数的递归调用。

    递归函数最大的好处在于可以精简程序中繁杂重复的程序,并且能以这种特性来执行一些较为复杂的运算动作。例如列表、动态树型菜单以及遍历目录等操作。相应的非递归函数虽然效率高,但却比较难编程,而且相对来说可读性差。

    递归思想

    递归的主要思想就是,把一个相对复杂的问题(原始问题)转化为一个个与原问题相似的规模较小的问题(子问题)来解决,等一个个小问题解决了,最终的大问题自然就解决了。

    递归方法只需少量的程序就可描述出解题过程所需要的多次重复计算,大大减少程序的代码量。当然,递归函数也不是完美的,也有一定的缺点,那就是递归方法函数的运行效率不高。

    在 PHP 中最大递归层数也不是没有限制的,这与程序的内存限额有关,PHP5 默认允许一个程序使用 128M 的内存,因此当递归层数过大导致 128M 内存耗尽时,程序就会产生一个致命错误并退出。PHP7 默认允许使用 256M 的内存。

    PHP 允许使用的最大内存可以通过修改 php.ini 文件来修改,如下所示:

    ; Maximum amount of memory a script may consume (128MB)
    ; http://php.net/memory-limit
    memory_limit=256M

    PHP中的递归

    想要实现递归,需满足以下两个条件:

    示例1:使用递归函数实现 n! 的阶乘。

    <?php
    header('content-type:text/html;charset=utf-8');   
    function factorial($num){
        //确定递归函数的出口
        if($num == 1){
            return 1;
        }else{
            return $num*factorial($num - 1);
        }
    }
    echo '15 的阶乘是:'.factorial(15);
    ?>

    运行结果如下:

    1.png

    示例2:计算斐波那契数列。

    斐波那契数列数列如下所示:

    1、1、2、3、5、8、13、21、34、...

    实现代码如下所示:

    <?php
    header('content-type:text/html;charset=utf-8');   
    function demo($num){
        //
        if($num == 1 || $num == 2){
            return 1;
        }else{
            return demo($num - 1) + demo($num - 2);
        }
    }
    echo '数列第 10 位是:'.demo(10);
    ?>

    运行结果如下:

    2.png

    推荐学习:《PHP视频教程

    以上就是php中递归函数是啥意思的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

    前端(VUE)零基础到就业课程:点击学习

    清晰的学习路线+老师随时辅导答疑

    自己动手写 PHP MVC 框架:点击学习

    快速了解MVC架构、了解框架底层运行原理

    专题推荐:php函数 php
    上一篇:php怎么将一维数组转为对象 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • ❤️‍🔥共22门课程,总价3725元,会员免费学• ❤️‍🔥接口自动化测试不想写代码?• PHP函数运用之返回某个日期的前一天和后一天• PHP函数运用之检查一个值是不是有限值、无限值或非数值• 实例演示怎么在单击按钮时调用PHP函数• 巧用PHP函数或常量快速获取PHP版本号、最大文件名长度• PHP函数运用之返回两给定日期的天数差• 如何用php函数实现冒泡排序
    1/1

    PHP中文网