php處理斐波那契數(shù)列非遞歸方法
更新時間:2012年02月04日 15:58:21 作者:
phpchina上有個名人叫大白菜心,經(jīng)常會拿這個事來說事。傳統(tǒng)處理會把斐波那契數(shù)列用遞歸來處理,效率慢是必然的。不過他說事說吧,居然不拿出答案來,就有點不厚道了
我自己構思了下,實際上程序來解決這個事情,就是一個偏移量的問題。首先看數(shù)列::1、1、2、3、5、8、13、21、34數(shù)列的下一個數(shù)是前2個數(shù)字之和,以此類推。
程序處理的話,實際上就是一個FOR語句,傳統(tǒng)FOR語句是for($i=1;$i;$count,$i++),這里的偏移量是$i=$i+1.如果處理這個數(shù)列的話,這個偏移量就不是1了,是前1個數(shù)字。那么當你for的時候,一個變量記錄上一個數(shù)字,另外一個記錄當前數(shù)字,偏移量為這上一個數(shù)字,然后在循環(huán)中重新賦值,將上一個數(shù)字記錄成當然循環(huán)值,以此做下個循環(huán)的偏移量。代碼其實很簡單:
$count = 9999999999967543;
$array = array('0′=>1);
for($a=1,$i=2;$i<$count;$i=$i+$a){
$array[] = $a;
$array[] = $i;
$a = $a +$i;
}
print_r($array);
echo $count.'里有'.count($array).'個斐波那契數(shù)列數(shù)';
建議哪個無聊人拿這個去phpchina給大白菜職業(yè)頂貼去
程序處理的話,實際上就是一個FOR語句,傳統(tǒng)FOR語句是for($i=1;$i;$count,$i++),這里的偏移量是$i=$i+1.如果處理這個數(shù)列的話,這個偏移量就不是1了,是前1個數(shù)字。那么當你for的時候,一個變量記錄上一個數(shù)字,另外一個記錄當前數(shù)字,偏移量為這上一個數(shù)字,然后在循環(huán)中重新賦值,將上一個數(shù)字記錄成當然循環(huán)值,以此做下個循環(huán)的偏移量。代碼其實很簡單:
復制代碼 代碼如下:
$count = 9999999999967543;
$array = array('0′=>1);
for($a=1,$i=2;$i<$count;$i=$i+$a){
$array[] = $a;
$array[] = $i;
$a = $a +$i;
}
print_r($array);
echo $count.'里有'.count($array).'個斐波那契數(shù)列數(shù)';
建議哪個無聊人拿這個去phpchina給大白菜職業(yè)頂貼去
相關文章
PHP數(shù)據(jù)庫編程之MySQL優(yōu)化策略概述
這篇文章主要介紹了PHP數(shù)據(jù)庫編程之MySQL優(yōu)化策略,簡單講述了mysql優(yōu)化的簡單技巧以及索引優(yōu)化、查詢優(yōu)化、存儲優(yōu)化等相關操作技巧,需要的朋友可以參考下2017-08-08PHP使用PDO、mysqli擴展實現(xiàn)與數(shù)據(jù)庫交互操作詳解
這篇文章主要介紹了PHP使用PDO、mysqli擴展實現(xiàn)與數(shù)據(jù)庫交互操作,結合實例形式分析了PHP基于pdo和mysqli操作數(shù)據(jù)的相關使用技巧,需要的朋友可以參考下2019-07-07PHPCrawl爬蟲庫實現(xiàn)抓取酷狗歌單的方法示例
這篇文章主要介紹了PHPCrawl爬蟲庫實現(xiàn)抓取酷狗歌單的方法,涉及PHPCrawl爬蟲庫的使用及正則匹配相關操作技巧,需要的朋友可以參考下2017-12-12