PHP迭代器實現(xiàn)斐波納契數(shù)列的函數(shù)
更新時間:2013年11月12日 10:00:41 作者:
斐波納契數(shù)列通常做法是用遞歸實現(xiàn),當然還有其它的方法。這里現(xiàn)學現(xiàn)賣,用PHP的迭代器來實現(xiàn)一個斐波納契數(shù)列,幾乎沒有什么難度,只是把類里的next()方法重寫了一次。注釋已經(jīng)寫到代碼中,也是相當好理解的
復制代碼 代碼如下:
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)鍵在這里
// 將當前值保存到 $newprevious
$newprevious = $this->current;
// 將上一個值與當前值的和賦給當前值
$this->current += $this->previous;
// 前一個當前值賦給上一個值
$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;
}
程序運行結(jié)果:
復制代碼 代碼如下:
0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610
您可能感興趣的文章:
- 深入理解PHP中的static和yield關(guān)鍵字
- PHP yield關(guān)鍵字功能與用法分析
- PHP5.5新特性之yield理解與用法實例分析
- PHP迭代器的內(nèi)部執(zhí)行過程詳解
- PHP迭代器和迭代的實現(xiàn)與使用方法分析
- PHP聚合式迭代器接口IteratorAggregate用法分析
- PHP基于SPL實現(xiàn)的迭代器模式示例
- C#特性 迭代器(下) yield以及流的延遲計算
- C#中使用迭代器處理等待任務(wù)
- C#使用yield關(guān)鍵字構(gòu)建迭代器詳解
- C#中的yield關(guān)鍵字的使用方法介紹
- php和C#的yield迭代器實現(xiàn)方法對比分析
相關(guān)文章
PHP中的使用curl發(fā)送請求(GET請求和POST請求)
本篇文章主要介紹了PHP中的使用curl發(fā)送請求(GET請求和POST請求),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-02-02微信開發(fā)之網(wǎng)頁授權(quán)獲取用戶信息(二)
本文給大家闡述的微信開發(fā)基于yii2.0框架,對微信開發(fā)之網(wǎng)頁授權(quán)獲取用戶信息相關(guān)知識感興趣的朋友通過本文學習吧2016-01-01yii2高級應(yīng)用之自定義組件實現(xiàn)全局使用圖片上傳功能的方法
這篇文章主要介紹了yii2高級應(yīng)用之自定義組件實現(xiàn)全局使用圖片上傳功能的方法,結(jié)合實例形式分析了Yii2自定義組件實現(xiàn)圖片上傳的相關(guān)步驟與操作技巧,需要的朋友可以參考下2016-10-10解決Linux下php-fpm進程過多導致內(nèi)存耗盡問題
這篇文章主要介紹了解決Linux下php-fpm進程過多導致內(nèi)存耗盡問題,需要的朋友可以參考下2017-12-12