详解php递归函数

来自:互联网
时间:2021-03-23
阅读:

递归就是一个函数在它的函数体内调用它自身。执行递归函数将反复调用其自身,每调用一次就进入新的一层。递归函数必须有结束条件。 下面跟着小编一起来学习递归吧。

详解php递归函数

递归思想就是,把一个相对复杂的问题(原始问题)转化为一个个与原问题相似的规模较小的问题(子问题)来解决,等一个个小问题解决了,最终的大问题自然就解决了。递归方法只需少量的程序就可描述出解题过程所需要的多次重复计算,大大减少程序的代码量。当然,递归函数也不完美,有一定的缺点,那就是递归函数的运行效率不高。
在 PHP 中递归层数也不是没有限制的,这与程序的内存限额有关,PHP5 允许一个程序使用 128M 的内存,因此当递归层数过大导致 128M 内存耗尽时,程序就会产生一个致命错误并退出。PHP7 允许使用 256M 的内存。

递归函数就是在函数内部自己调用自己。执行递归函数将反复调用其自身,每调用一次就进入新的一层。递归函数必须有结束条件。当函数在一直递推,直到遇到墙后返回,这个墙就是结束条件。所以递归要有两个要素,结束条件与递推关系。

注:函数在被调用执行的过程中会在内存里面分配空间用于存储临时数据,那么函数在执行过程中默认之间是没有联系的(除了静态变量,按引用传,全局变量)。里面的变量默认都是局部变量,相互之间没有影响。我们来看一个例子加深印象:

<?php
    function demo($num){
        //
        if($num == 1 || $num == 2){
            return 1;
        }else{
            return demo($num - 1) + demo($num - 2);
        }
    }

    echo '数列第 10 位是:'.demo(10);//数列第 10 位是:55
?>

这个例子是不是有点眼熟,这就是斐波那契数列,我们计算斐波那契数列的时候,如果使用其他方法相较而言还是有一定难度的,但是使用递归函数,效率就高了很多。

返回顶部
顶部