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

2018-07-20    来源:open-open

容器云强势上线!快速搭建集群,上万Linux镜像随意使用

斐波纳契数列通常做法是用递归实现,当然还有其它的方法。这里现学现卖,用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  

标签: 代码

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点!
本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。

上一篇: php上传文件

下一篇:封装了 System.Data.SQLite 的数据库助手类