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 
  • 相关阅读:
    StarGAN v2
    STGAN
    Neo4j 图数据库查询
    StarGAN
    AttGAN
    分布式事务解决方案--Seata源码解析
    5分钟彻底了解Nginx的反向代理
    SpringBoot启动流程源码解析
    JAVA基础5--注解的实现原理
    Redis进阶三之底层存储数据结构及内存优化
  • 原文地址:https://www.cnblogs.com/xingmeng/p/3223165.html
Copyright © 2011-2022 走看看