Created
May 9, 2013 09:55
-
-
Save phoenixg/5546639 to your computer and use it in GitHub Desktop.
用PHP迭代器来实现一个斐波纳契数列
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
// 用PHP迭代器来实现一个斐波纳契数列 | |
// 转载自: http://www.nowamagic.net/librarys/veda/detail/2164 | |
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 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment