说明:
Fibonacci 为 1200 年代的欧洲数学家,在他的着作中曾经提到:若有一只免子每个月生一只小免子 , 一个月后小免子也开始生产。起初只有一只免子,一个月后就有两只免子,二个月后有三只免子,三个月后有五只免子(小免子投入生产) ...... 。如果不太理解这个例子的话,举个图就知道了,注意新生的小免子需一个月成长期才会投入生产,类似的道理也可以用于植物的生长,这就是 Fibonacci 数列,一般习惯称之为费氏数列,例如以下: 1 、 1 、 2 、 3 、 5 、 8 、 13 、 21 、 34 、 55 、 89......
php代码实现如下:
<?php class fibonacci implements Iterator { private $previous = 0; private $current = 1; 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 = 0; $this->current = 1; $this->key = 0; } public function valid() { return true; } } function main() { $seq = new fibonacci; foreach ($seq as $k=>$v) { echo ($k+1).' => '.$v."\n"; if($k == 15) { break; } } } main();