斐波纳契数列通常做法是用递归实现,当然还有其它的方法。这里现学现卖,用PHP的迭代器来实现一个斐波纳契数列,几乎没有什么难度,只是把类里的next()方法重写了一次。
注释已经写到代码中,也是相当好理解的。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | 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 = $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 ;
}
|
Salin selepas log masuk
程序运行结果:
1 | 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610
|
Salin selepas log masuk
推荐:《PHP教程》
Atas ialah kandungan terperinci 如何用PHP迭代器来实现一个斐波纳契数列. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!