The Algorithms logo
The Algorithms
AboutDonate

Fibonacci 2

<?php

/*
 * Print Fibocanni sequence using a generator
 */

 /**
  * @param int $i number of Fibonacci numbers to generate
  * @param Generator $set Fibonacci calculator
  */
function loop($i, Generator $set)
{
    while($i-- > 0 && $set->valid())
    {
        yield $set->current();
        $set->next();
    }
}

/*
 * Fibonacci generator
 */
function fib()
{
    yield $i = 0;
    yield $j = 1;

    while(true)
    {
        yield $k = $i + $j;
        $i = $j;
        $j = $k;
    }
}

/*
 * Generate 100 Fibonacci numbers
 */
foreach(loop(100, fib()) as $item)
{
    print($item.',');
}