用PHP迭代器来实现一个斐波纳契数列

清华大佬耗费三个月吐血整理的几百G的资源,免费分享!....>>>

斐波纳契数列通常做法是用递归实现,当然还有其它的方法。这里现学现卖,用PHP的迭代器来实现一个斐波纳契数列,几乎没有什么难度,只是把类里的next()方法重写了一次。注释已经写到代码中,也是相当好理解的。

    <?php  
    /* 
    *@author nicesunboy@gmail.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