> php教程 > php手册 > 用PHP迭代器来实现一个斐波纳契数列

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

WBOY
풀어 주다: 2016-06-06 19:53:15
원래의
1079명이 탐색했습니다.

欢迎进入Linux社区论坛,与200万技术人员互动交流 >>进入 斐波纳契数列通常做法是用递归实现,当然还有其它的方法。这里现学现卖,用PHP的迭代器来实现一个斐波纳契数列,几乎没有什么难度,只是把类里的next()方法重写了一次。注释已经写到代码中,也是相

欢迎进入Linux社区论坛,与200万技术人员互动交流 >>进入

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

  echo "$f ";

  if ($i++ === 15) break;

  }

  ?>

  程序运行结果:

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

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

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 추천
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿