php フィボナッチ数列のイテレーター

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php フィボナッチ数列のイテレーター相关的知识,希望对你有一定的参考价值。

<?php
// フィボナッチ数列のイテレーター
class FibonacciIterator implements Iterator
{
	protected $a;
	protected $b;
	protected $key;
	protected $limit;

	public function __construct($limit = 10)
	{
		$this->limit = $limit;
		$this->rewind();
	}
	public function current()
	{
		if ($this->key === 0)
		{
			return 0;
		}
		if ($this->key === 1)
		{
			return 1;
		}
		$this->b = $this->a + $this->b;
		$this->a = $this->b - $this->a;
		return $this->b;
	}
	public function key()
	{
		return $this->key;
	}
	public function next()
	{
		$this->key = $this->key + 1;
	}
	public function rewind()
	{
		$this->a = 0;
		$this->b = 1;
		$this->key = 0;
	}
	public function valid()
	{
		return $this->key < $this->limit;
	}
}

$iterator = new FibonacciIterator(20);
foreach($iterator as $val)
{
	var_dump($val);
}
foreach($iterator as $val)
{
	var_dump($val);
}

//=> int(0)
//=> int(1)
//=> int(1)
//=> int(2)
//=> int(3)
//=> int(5)
//=> int(8)
//=> int(13)
//=> int(21)
//=> int(34)
//=> int(55)
//=> int(89)
//=> int(144)
//=> int(233)
//=> int(377)
//=> int(610)
//=> int(987)
//=> int(1597)
//=> int(2584)
//=> int(4181)

//=> int(0)
//=> int(1)
//=> int(1)
//=> int(2)
//=> int(3)
//=> int(5)
//=> int(8)
//=> int(13)
//=> int(21)
//=> int(34)
//=> int(55)
//=> int(89)
//=> int(144)
//=> int(233)
//=> int(377)
//=> int(610)
//=> int(987)
//=> int(1597)
//=> int(2584)
//=> int(4181)

以上是关于php フィボナッチ数列のイテレーター的主要内容,如果未能解决你的问题,请参考以下文章

markdown メモ化を使ったフィボナッチ数列を求める关数

Typical DP Contest 社论

c_cpp フィボナッチ数列をどこまで小さく记述できるかin C ref:http://qiita.com/maekawatoshiki/items/b1cba7600d3dbd634a79

markdown イテレータ

ruby 二つの枚举を外部イテレーターの机能で突き合わせを行いマージする

javascript Vue公司で使うフィルータ