Heim  >  Artikel  >  Backend-Entwicklung  >  用PHP迭代器来实现一个斐波纳契数列_PHP教程

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

WBOY
WBOYOriginal
2016-07-13 10:29:17746Durchsuche

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



www.bkjia.comtruehttp://www.bkjia.com/PHPjc/777571.htmlTechArticle斐波纳契数列通常做法是用递归实现,当然还有其它的方法。这里现学现卖,用PHP的迭代器来实现一个斐波纳契数列,几乎没有什么难度,...
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn