zoukankan      html  css  js  c++  java
  • 用PHP迭代器来实现一个斐波纳契数列

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

    /**
    * @author 简明现代魔法 http://www.nowamagic.net
    */
    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 
  • 相关阅读:
    PHP实现4种排序算法
    PHP反射获取当前函数的内容
    PHP递归目录的5种方法
    生成随机数组
    empty、isset、is_null的比较
    PHP哈希表碰撞攻击
    XMLHttpRequest的跨域请求
    CI框架SESSION重写
    PHP开发第一个扩展
    PHP面试题集之基础题
  • 原文地址:https://www.cnblogs.com/fyy-888/p/5102578.html
Copyright © 2011-2022 走看看