php處理斐波那契數(shù)列非遞歸方法
更新時(shí)間:2012年02月04日 15:58:21 作者:
phpchina上有個(gè)名人叫大白菜心,經(jīng)常會(huì)拿這個(gè)事來(lái)說(shuō)事。傳統(tǒng)處理會(huì)把斐波那契數(shù)列用遞歸來(lái)處理,效率慢是必然的。不過(guò)他說(shuō)事說(shuō)吧,居然不拿出答案來(lái),就有點(diǎn)不厚道了
我自己構(gòu)思了下,實(shí)際上程序來(lái)解決這個(gè)事情,就是一個(gè)偏移量的問(wèn)題。首先看數(shù)列::1、1、2、3、5、8、13、21、34數(shù)列的下一個(gè)數(shù)是前2個(gè)數(shù)字之和,以此類推。
程序處理的話,實(shí)際上就是一個(gè)FOR語(yǔ)句,傳統(tǒng)FOR語(yǔ)句是for($i=1;$i;$count,$i++),這里的偏移量是$i=$i+1.如果處理這個(gè)數(shù)列的話,這個(gè)偏移量就不是1了,是前1個(gè)數(shù)字。那么當(dāng)你for的時(shí)候,一個(gè)變量記錄上一個(gè)數(shù)字,另外一個(gè)記錄當(dāng)前數(shù)字,偏移量為這上一個(gè)數(shù)字,然后在循環(huán)中重新賦值,將上一個(gè)數(shù)字記錄成當(dāng)然循環(huán)值,以此做下個(gè)循環(huán)的偏移量。代碼其實(shí)很簡(jiǎ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).'個(gè)斐波那契數(shù)列數(shù)';
建議哪個(gè)無(wú)聊人拿這個(gè)去phpchina給大白菜職業(yè)頂貼去
程序處理的話,實(shí)際上就是一個(gè)FOR語(yǔ)句,傳統(tǒng)FOR語(yǔ)句是for($i=1;$i;$count,$i++),這里的偏移量是$i=$i+1.如果處理這個(gè)數(shù)列的話,這個(gè)偏移量就不是1了,是前1個(gè)數(shù)字。那么當(dāng)你for的時(shí)候,一個(gè)變量記錄上一個(gè)數(shù)字,另外一個(gè)記錄當(dāng)前數(shù)字,偏移量為這上一個(gè)數(shù)字,然后在循環(huán)中重新賦值,將上一個(gè)數(shù)字記錄成當(dāng)然循環(huán)值,以此做下個(gè)循環(huán)的偏移量。代碼其實(shí)很簡(jiǎn)單:
復(fù)制代碼 代碼如下:
$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).'個(gè)斐波那契數(shù)列數(shù)';
建議哪個(gè)無(wú)聊人拿這個(gè)去phpchina給大白菜職業(yè)頂貼去
您可能感興趣的文章:
- php實(shí)現(xiàn)斐波那契數(shù)列的簡(jiǎn)單寫法
- php實(shí)現(xiàn)斐波那契數(shù)列代碼分享
- php遞歸使用示例(php遞歸函數(shù))
- php實(shí)現(xiàn)遞歸的三種基本方式
- php實(shí)現(xiàn)無(wú)限級(jí)分類查詢(遞歸、非遞歸)
- PHP經(jīng)典算法集錦【經(jīng)典收藏】
- PHP面試常用算法(推薦)
- 使用PHP實(shí)現(xiàn)二分查找算法代碼分享
- PHP常用算法和數(shù)據(jù)結(jié)構(gòu)示例(必看篇)
- php求斐波那契數(shù)的兩種實(shí)現(xiàn)方式【遞歸與遞推】
相關(guān)文章
利用PHP實(shí)現(xiàn)詞法分析器與自定義語(yǔ)言
這篇文章主要為大家詳細(xì)介紹了潤(rùn)滑利用PHP實(shí)現(xiàn)詞法分析器與自定義語(yǔ)言,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以動(dòng)手嘗試一下2022-08-08PHP跨時(shí)區(qū)(UTC時(shí)間)應(yīng)用解決方案
解決PHP跨時(shí)區(qū)應(yīng)用需要將將程序內(nèi)部時(shí)區(qū)設(shè)置為UTC時(shí)間.(UTC 也可以叫 GMT) 數(shù)據(jù)庫(kù)中存儲(chǔ)UTC時(shí)間等等,感興趣的朋友可以了解下2013-01-01PHP數(shù)據(jù)庫(kù)編程之MySQL優(yōu)化策略概述
這篇文章主要介紹了PHP數(shù)據(jù)庫(kù)編程之MySQL優(yōu)化策略,簡(jiǎn)單講述了mysql優(yōu)化的簡(jiǎn)單技巧以及索引優(yōu)化、查詢優(yōu)化、存儲(chǔ)優(yōu)化等相關(guān)操作技巧,需要的朋友可以參考下2017-08-08如何解決php domdocument找不到的問(wèn)題
在本篇文章里小編給大家整理的是一篇關(guān)于php domdocument找不到的解決辦法,有需要的朋友們可以跟著學(xué)習(xí)參考下。2021-07-07深入理解PHP中mt_rand()隨機(jī)數(shù)的安全
mt_rand()使用mersennetwister算法返回隨機(jī)整數(shù),這個(gè)大家都知道,但下面這篇文章主要給大家介紹的是關(guān)于PHP中mt_rand()隨機(jī)數(shù)安全的相關(guān)資料,文中介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2017-10-10PHP使用PDO、mysqli擴(kuò)展實(shí)現(xiàn)與數(shù)據(jù)庫(kù)交互操作詳解
這篇文章主要介紹了PHP使用PDO、mysqli擴(kuò)展實(shí)現(xiàn)與數(shù)據(jù)庫(kù)交互操作,結(jié)合實(shí)例形式分析了PHP基于pdo和mysqli操作數(shù)據(jù)的相關(guān)使用技巧,需要的朋友可以參考下2019-07-07PHPCrawl爬蟲庫(kù)實(shí)現(xiàn)抓取酷狗歌單的方法示例
這篇文章主要介紹了PHPCrawl爬蟲庫(kù)實(shí)現(xiàn)抓取酷狗歌單的方法,涉及PHPCrawl爬蟲庫(kù)的使用及正則匹配相關(guān)操作技巧,需要的朋友可以參考下2017-12-12