斐波納契數(shù)列通常做法是用遞歸實(shí)現(xiàn),當(dāng)然還有其它的方法。這里現(xiàn)學(xué)現(xiàn)賣,用PHP的迭代器來(lái)實(shí)現(xiàn)一個(gè)斐波納契數(shù)列,幾乎沒(méi)有什么難度,只是把類里的next()方法重寫(xiě)了一次。
網(wǎng)站建設(shè)哪家好,找成都創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、微信小程序、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了東勝免費(fèi)建站歡迎大家使用!
注釋已經(jīng)寫(xiě)到代碼中,也是相當(dāng)好理解的。
/** * @author 簡(jiǎn)明現(xiàn)代魔法 http://www.nowamagic.net */ class Fibonacci implements Iterator { private $previous = 1; private $current = 0; private $key = 0; public function current() { return $this->current; } public function key() { return $this->key; } public function next() { // 關(guān)鍵在這里 // 將當(dāng)前值保存到 $newprevious $newprevious = $this->current; // 將上一個(gè)值與當(dāng)前值的和賦給當(dāng)前值 $this->current += $this->previous; // 前一個(gè)當(dāng)前值賦給上一個(gè)值 $this->previous = $newprevious; $this->key++; } public function rewind() { $this->previous = 1; $this->current = 0; $this->key = 0; } public function valid() { return true; } } $seq = new Fibonacci; $i = 0; foreach ($seq as $f) { echo "$f "; if ($i++ === 15) break; }
程序運(yùn)行結(jié)果:
0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610
以上就是如何用PHP迭代器來(lái)實(shí)現(xiàn)一個(gè)斐波納契數(shù)列的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注創(chuàng)新互聯(lián)其它相關(guān)文章!