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 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; } } } }