Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. using System;
  2. using System.Collections.Generic;
  3.  
  4. namespace Articulos.Cap04.Iteradores
  5. {
  6.     public sealed class IteradorSerieFibonacci
  7.     {
  8.         public static void Main()
  9.         {
  10.             // El iterador se encarga de recorrer cada elemento
  11.             // generado por el método `Fibonacci`:
  12.             foreach (int fib in Fibonacci(7))
  13.             {
  14.                 Console.Write ("{0} ", fib.ToString() );
  15.             }
  16.            
  17.             Console.WriteLine ();
  18.         }
  19.        
  20.         // Retorna elemento por elemento de la serie Fibonacci
  21.         // hasta la cantidad especificada en el argumento:
  22.         private static IEnumerable<int> Fibonacci(int numero)
  23.         {
  24.             // Por cada iteración retorna el valor de la serie actual,
  25.             // realiza los cálculos necesarios para generar el siguiente
  26.             // valor de la serie:
  27.             for (int i = 0, fibAnterior = 1, fibActual = 1; i < numero; ++i)
  28.             {
  29.                 // Retorna el valor actual de la serie Fibonacci:
  30.                 yield return fibAnterior;
  31.                
  32.                 int fibNuevo = fibAnterior + fibActual;
  33.                
  34.                 fibAnterior = fibActual;
  35.                 fibActual = fibNuevo;
  36.             }
  37.         }
  38.     }
  39. }