您好,登錄后才能下訂單哦!
這篇文章將為大家詳細(xì)講解有關(guān)PHP中怎么實現(xiàn)黃金分割數(shù)列,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。
斐波那契數(shù)列指的是這樣一個數(shù)列:
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765.......
即:前兩個值都為1,從第三位開始,每一位都是當(dāng)前位前兩位的和
規(guī)律公式為:
Fn = F(n-1) + F(n+1)
F:指當(dāng)前這個數(shù)列
n:指數(shù)列的下標(biāo)
好了,了解了黃金分割數(shù)列(斐波那契數(shù)列),下面我們來了解一下使用PHP實現(xiàn)的方法。
方法1:利用數(shù)組
觀察上面給出的數(shù)列,結(jié)合數(shù)組知識,可以分析出:
數(shù)組下標(biāo)為0或1時,元素的值為1
;
數(shù)組下標(biāo)為2時,元素是a[0]+a[1]
;
數(shù)組下標(biāo)為3時,元素是a[1]+a[2]
;
.....
數(shù)組下標(biāo)為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); ?>
輸出:
了解了如何利用數(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); ?>
輸出:
關(guān)于PHP中怎么實現(xiàn)黃金分割數(shù)列就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。