using System;
using System.Collections.Generic;
namespace Articulos.Cap04.Iteradores
{
public sealed class IteradorSerieFibonacci
{
public static void Main()
{
// El iterador se encarga de recorrer cada elemento
// generado por el método `Fibonacci`:
foreach (int fib in Fibonacci(7))
{
Console.Write ("{0} ", fib.ToString() );
}
Console.WriteLine ();
}
// Retorna elemento por elemento de la serie Fibonacci
// hasta la cantidad especificada en el argumento:
private static IEnumerable<int> Fibonacci(int numero)
{
// Por cada iteración retorna el valor de la serie actual,
// realiza los cálculos necesarios para generar el siguiente
// valor de la serie:
for (int i = 0, fibAnterior = 1, fibActual = 1; i < numero; ++i)
{
// Retorna el valor actual de la serie Fibonacci:
yield return fibAnterior;
int fibNuevo = fibAnterior + fibActual;
fibAnterior = fibActual;
fibActual = fibNuevo;
}
}
}
}