• 用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 
  • 相关阅读:
    在JS和.NET中使用JSON (以及使用Linq to JSON定制JSON数据)
    转载JSON格式化工具
    bzoj3771 Triple
    hdu 2082 找单词
    bzoj 3143: [Hnoi2013]游走
    Wannafly挑战赛17 B
    基尔霍夫矩阵
    矩阵&行列式
    luogu P2421 [NOI2002]荒岛野人
    bzoj 2818: Gcd
  • 原文地址:https://www.cnblogs.com/fyy-888/p/5102578.html
Copyright © 2020-2023  润新知