溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何用php實現(xiàn)斐波那契數(shù)列

發(fā)布時間:2023-02-24 10:39:41 來源:億速云 閱讀:139 作者:iii 欄目:編程語言

這篇文章主要介紹了如何用php實現(xiàn)斐波那契數(shù)列的相關(guān)知識,內(nèi)容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇如何用php實現(xiàn)斐波那契數(shù)列文章都會有所收獲,下面我們一起來看看吧。

實現(xiàn)方法:1、用數(shù)組來求,語法“for($i=0;$i<$n;$i++){if($i==0||$i==1){$arr[$i]=1;}else{$arr[$i]=$arr[$i-1]+$arr[$i-2];}echo $arr[$i];}”;2、用遞歸,語法“f($n){if($n==1||$n==2){return 1;}return f($n-1)+f($n-2);}}”。

斐波那契數(shù)是什么

斐波那契數(shù)列(Fibonacci sequence),又稱黃金分割數(shù)列、因數(shù)學家列昂納多·斐波那契(Leonardoda Fibonacci)以兔子繁殖為例子而引入,故又稱為“兔子數(shù)列”,指的是這樣一個數(shù)列:

1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765.......

即:前兩個值都為1,從第三位開始,每一位都是當前位前兩位的和

如何用php實現(xiàn)斐波那契數(shù)列

在數(shù)學上,斐波那契數(shù)列以如下被以遞推的方法定義:

F(1)=1,F(xiàn)(2)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 3,n ∈ N*)

  • F:指當前這個數(shù)列

  • n:指數(shù)列的下標

好了,了解了斐波那契數(shù)列,下面我們來了解一下使用PHP實現(xiàn)的方法。

方法1:利用數(shù)組

觀察上面給出的數(shù)列,結(jié)合數(shù)組知識,可以分析出:

  • 數(shù)組下標為0或1時,元素的值為1;

  • 數(shù)組下標為2時,元素是a[0]+a[1];

  • 數(shù)組下標為3時,元素是a[1]+a[2];

  • .....

  • 數(shù)組下標為n時,元素是a[n-2]+a[n-1];

可以得出:

  • a[0]=1

  • a[1]=2

  • a[n]=a[n-2]+a[n-1]   (n>2)

代碼實現(xiàn):

<?php
header("Content-type:text/html;charset=utf-8");
function test($num){
    $arr=[];
    for($i=0;$i<$num;$i++)
    {
        if($i==0 || $i==1){
            $arr[$i]=1;
        }else{
            $arr[$i]=$arr[$i-1]+$arr[$i-2];
        }
		echo $arr[$i]." ";
    }
}
echo "斐波那契數(shù)列前10位:";
test(10);
echo "<br>斐波那契數(shù)列前11位:";
test(11);
echo "<br>斐波那契數(shù)列前12位:";
test(12);
?>

輸出:

如何用php實現(xiàn)斐波那契數(shù)列

了解了如何利用數(shù)組來求斐波那契數(shù)列,下面我們來看看利用遞歸來求斐波那契數(shù)列。

方法2:使用遞歸

<?php
header("Content-type:text/html;charset=utf-8");
function fbnq($n) {
	if ($n <= 0) {
		return 0;
	}
	if ($n == 1 || $n == 2) {
		return 1;
	}
	return fbnq($n - 1) + fbnq($n - 2);
}

echo "斐波那契數(shù)列第10位:" . fbnq(10);
echo "<br>斐波那契數(shù)列第11位:" . fbnq(11);
echo "<br>斐波那契數(shù)列第12位:" . fbnq(12);
?>

輸出:

如何用php實現(xiàn)斐波那契數(shù)列

遞歸法也實現(xiàn)出來了,是不是很簡單!

遞歸算法可以將一個負責的問題使用較短的代碼將問題解決出來,但是運行的效率比較低。

關(guān)于“如何用php實現(xiàn)斐波那契數(shù)列”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對“如何用php實現(xiàn)斐波那契數(shù)列”知識都有一定的了解,大家如果還想學習更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

php
AI