標籤:
斐波那契數列(Fibonacci sequence),又稱黃金分割數列、因數學家列昂納多·斐波那契(Leonardoda Fibonacci)以兔子繁殖為例子而引入,故又稱為“兔子數列”,指的是這樣一個數列:0、1、1、2、3、5、8、13、21、34、……在數學上,費伯納西數列以如下被以遞迴的方法定義:F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2)(n≥2,n∈N*)在現代物理、准晶體結構、化學等領域,費伯納西數列都有直接的應用。————摘自百度百科
公式:
F(n)=F(n-1)+F(n-2)
網上有太多實現斐波那契數列的方法了,這裡就不引述,唯寫一下個人的實現方法,雖然不怎麼嚴謹,但個人感覺還行,需要的朋友可以借鑒一下
php實現原理(當然也有其他的方式或者原理):
構建數組,通過中間替換變數,求取數組的最後一個元素,迴圈添加到數組中
<?php /* *函數功能求出斐波那數列的最後一項的值 *@param1 數列的第一個值 $one *@param2 數列的第二個值 $two *@parma3 數列的第n項,也是數列的元素個數,$n *傳回值,斐波那數列的最後一項的值 */ function Fobb($one,$two,$n){ //不是整數則返回false,這裡只考慮整數的情況 if(!is_int($one) || !is_int($two)) return false; if(!is_int($n) || $n < 2) return false;//判斷$n是否為正整數 //初始化斐波那契數列 $arr = array($one,$two); //初始化最後一項的值 $j = $two; //迴圈添加斐波那契數列的元素 for($i=0;$i<$n-2;$i++){ $j= $arr[$i] + $j; //把最後一項添加數列的尾部 array_push($arr,$j); } return $j; } var_dump(Fobb(0,1,60));//32位系統的超過2147483647就轉為float類型
根據這個中間替換變數,迴圈添加數組元素的方式,我們也可以用它來實現階乘
<?php//求一個整數的階乘function factorial($n){ if(!is_int($n) || $n<0) return false; //初始化階乘數組 $arr = array($n); //初始化階乘的值 $j = 1; for($i=0;$i<$n;$i++){ //利用階乘公式求階乘的值,儲存在中間中間變數$j中 $j = $j*($n-$i); array_push($arr,$j); } return $j;}var_dump(factorial(1));
結語:
利用這個中間替代變數的方法實現一些程式功能,我想這是一個非常有用的程式思維,這是我實現斐波那契數列數列求值所獲得的東西
php實現斐波那契數列以及由此引起的聯想