【PHP 递归和迭代】斐波纳切数列的三种实现方式

斐波那契数列,又称黄金分割数列,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……
下面介绍PHP的三种实现方式:

递归

这种方式最简洁,但效率最低,内存消耗高,递归太多容易造成栈溢出。

function fib1($n)
{
    if ($n == 0) return 0;
    if ($n == 1) return 1;
    return fib1($n - 1) + fib1($n - 2);
}

尾递归

比上面的递归效率高(接近下面的循环迭代),理论上尾递归依然有栈溢出的问题,但实际中编译器会做“尾递归优化”,大大降低栈溢出的风险

function fib2($a = 0, $b = 1, $n)
{
    if ($n == 0) return 0;
    if ($n == 1) return $b;
    return fib2($b, $a + $b, $n - 1);
}

循环迭代

这种方式效率最高

function fib3($n)
{
    $a = 0;
    $b = 1;
    for ($i = 0; $i < $n; $i++)
    {
        $temp = $a;
        $a = $b;
        $b = $a + $temp;
    }
    return $a;
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容