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

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

作者: 马蹄哒 | 来源:发表于2020-03-11 09:57 被阅读0次

斐波那契数列,又称黄金分割数列,指的是这样一个数列: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;
}

相关文章

网友评论

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

      本文链接:https://www.haomeiwen.com/subject/xwgfjhtx.html