【PHP 遞歸和迭代】斐波納切數(shù)列的三種實(shí)現(xiàn)方式

斐波那契數(shù)列,又稱黃金分割數(shù)列,指的是這樣一個(gè)數(shù)列:0、1、1、2、3、5、8、13、21、34、……
下面介紹PHP的三種實(shí)現(xiàn)方式:

遞歸

這種方式最簡(jiǎn)潔,但效率最低,內(nèi)存消耗高,遞歸太多容易造成棧溢出。

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

尾遞歸

比上面的遞歸效率高(接近下面的循環(huán)迭代),理論上尾遞歸依然有棧溢出的問(wèn)題,但實(shí)際中編譯器會(huì)做“尾遞歸優(yōu)化”,大大降低棧溢出的風(fēng)險(xiǎn)

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

循環(huán)迭代

這種方式效率最高

function fib3($n)
{
    $a = 0;
    $b = 1;
    for ($i = 0; $i < $n; $i++)
    {
        $temp = $a;
        $a = $b;
        $b = $a + $temp;
    }
    return $a;
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容