background image

深圳市一览网络股份有限
公司
ShenZhen Elanw Network 

Co.,Ltd.

地址:南山科技园南区数字技术园
B2 栋 4A 
Add: Room A,4th Floor,Block 
B2,Digi-Tech Park ,

电话(Tel):0755-86133725
传真(Fax):0755-22632616
网址
(Web):www.YL1001.com

 

斐波纳契数列通常做法是用递归实现,当然
还有其它的方法。这里现学现卖,用

PHP 的迭代器来实现一个斐波纳契数列,几乎没有什么难度,只是把

类里的

next()方法重写了一次。注释已经写到代码中,也是相当好理解的

 
代码如下

:

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

) {