生活中,我們用肉眼分辨為美的事物,常常神奇地包含了黃金分割比,此時就不得不感嘆一下:數學的美麗無處不在。而黃金分割數列(又稱斐波那契數列)的后一項與前一項比值的極限就是二分之根號五減一,約等于0.618(即黃金分割比例)。那么使用PHP要如何實現黃金分割數列呢,不急,我們慢慢來了解。
首先我們來了解一下黃金分割數列(即斐波那契數列):
斐波那契數列指的是這樣一個數列:
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765…….
即:前兩個值都為1,從第三位開始,每一位都是當前位前兩位的和
規律公式為:
Fn = F(n-1) + F(n+1)
-
F:指當前這個數列
-
n:指數列的下標
好了,了解了黃金分割數列(斐波那契數列),下面我們來了解一下使用PHP實現的方法。
方法1:利用數組
觀察上面給出的數列,結合數組知識,可以分析出:
-
數組下標為0或1時,元素的值為
1
; -
數組下標為2時,元素是
a[0]+a[1]
; -
數組下標為3時,元素是
a[1]+a[2]
; -
…..
-
數組下標為n時,元素是
a[n-2]+a[n-1];
可以得出:
-
a[0]=1
-
a[1]=2
-
a[n]=a[n-2]+a[n-1]
(n>2)
代碼實現:
<?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 "斐波那契數列前10位:"; test(10); echo "<br>斐波那契數列前11位:"; test(11); echo "<br>斐波那契數列前12位:"; test(12); ?>
輸出:
了解了如何利用數組來求斐波那契數列,下面我們來看看利用遞歸來求斐波那契數列。
方法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 "斐波那契數列第10位:" . fbnq(10); echo "<br>斐波那契數列第11位:" . fbnq(11); echo "<br>斐波那契數列第12位:" . fbnq(12); ?>
輸出:
遞歸法也實現出來了,是不是很簡單!
遞歸算法可以將一個負責的問題使用較短的代碼將問題解決出來,但是運行的效率比較低。
好了就說到這里了,有其他想知道的,可以點擊這個哦。→ →php視頻教程