首先引用下百度百科关于迭代的说法

迭代法也称辗转法,是一种不断用变量的旧值递推新值的过程,跟迭代法相对应的是直接法(或者称为一次解法),即一次性解决问题。迭代算法是用计算机解决问题的一种基本方法,它利用计算机运算速度快、适合做重复性操作的特点,让计算机对一组指令(或一定步骤)进行重复执行,在每次执行这组指令(或这些步骤)时,都从变量的原值推出它的一个新值,迭代法又分为精确迭代和近似迭代。比较典型的迭代法如“二分法”和"牛顿迭代法”属于近似迭代法。

迭代也能称为递推,是将得出来的数值不断进行重复运算,结果无限接近或者等于最终值的过程。

现在我们来看下斐波那契F(n) = F(n-1) + F(n-2)用PHP的预定义接口迭代器来实现的方式:

<?php
Class Fibonacci implements Iterator{
    public $k = 0;

    public $x = 0;

    public $y = 1;

    public $iterators = 50;

    public function key() {
        return $this->k;
    }

    public function current() {
        return $this->x;
    }

    public function next() {
        $this->x += $this->y;
        $this->y = $this->current();
        ++$this->k;
    }

    public function rewind () {
        $this->k = 0;
    }

    public function valid() {
        if ($this->k >= $this->iterators) return false;
        return true;
    }
}

$Fibonacci = new Fibonacci;
$Fibonacci->rewind();

while($Fibonacci->valid()) {
    echo $Fibonacci->k . ':' . $Fibonacci->current() . '<br/>';
    $Fibonacci->next();
}