深圳市一览网络股份有限
公司
ShenZhen Elanw Network
Co.,Ltd.
地址:南山科技园南区数字技术园
B2 栋 4A
Add: Room A,4th Floor,Block
B2,Digi-Tech Park ,
电话(Tel):0755-86133725
传真(Fax):0755-22632616
网址
(Web):www.YL1001.com
斐波纳契数列通常做法是用递归实现,当然
还有其它的方法。这里现学现卖,用
PHP 的迭代器来实现一个斐波纳契数列,几乎没有什么难度,只是把
类里的
next()方法重写了一次。注释已经写到代码中,也是相当好理解的
代码如下
:
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() {
// 关键在这里
// 将当前值保存到 $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
) {