PHP迭代器实例 php实现斐波纳契数列函数

发布时间:2020-09-06编辑:脚本学堂
本文分享一个php迭代器的例子,使用php迭代器实现斐波纳契数列函数,感兴趣的朋友,可以参考学习下。

本节内容:
PHP迭代器实例
斐波纳契数列函数

说明:
斐波纳契数列通常做法是用递归实现。
本文分享的这例代码,用PHP的迭代器来实现一个斐波纳契数列,只是把类里的next()方法重写了一次。
 

复制代码 代码示例:

<?php
/**
* PHP迭代器实例
* 斐波纳契数列函数
* by www.jb200.com
*/

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) {
    echo "$f ";
    if ($i++ === 15) break;
}

运行结果:
 

0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610