当前位置:首页 > PHP教程 > php函数 > 列表

PHP迭代器实现斐波纳契数列的函数

发布:smiling 来源: PHP粉丝网  添加日期:2020-06-18 10:07:49 浏览: 评论:0 

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

  1. class Fibonacci implements Iterator {  
  2.     private $previous = 1;  
  3.     private $current = 0;  
  4.     private $key = 0;  
  5.  
  6.     public function current() {  
  7.         return $this->current;  
  8.     }  
  9.  
  10.     public function key() {  
  11.         return $this->key;  
  12.     }  
  13.  
  14.     public function next() {  
  15.   // 关键在这里 
  16.   // 将当前值保存到  $newprevious 
  17.         $newprevious = $this->current;  
  18.   // 将上一个值与当前值的和赋给当前值 
  19.         $this->current += $this->previous;  
  20.   // 前一个当前值赋给上一个值 
  21.         $this->previous = $newprevious;  
  22.         $this->key++;  
  23.     }  
  24.  
  25.     public function rewind() {  
  26.         $this->previous = 1;  
  27.         $this->current = 0;  
  28.         $this->key = 0;  
  29.     }  
  30.  
  31.     public function valid() {  
  32.         return true;  
  33.     }  
  34. }  
  35.  
  36. $seq = new Fibonacci;  
  37. $i = 0;  
  38. foreach ($seq as $f) {  
  39.     echo "$f ";  
  40.     if ($i++ === 15) break;  
  41. }  

程序运行结果:

  1. 0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 

Tags: PHP迭代器 PHP斐波纳契数列

分享到: