Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. using System;
  2. using System.Collections.Generic;
  3.  
  4. namespace Articulos.Cap04.Secuencias
  5. {
  6.     public sealed class FibonacciPares
  7.     {
  8.         public static void Main()
  9.         {
  10.             foreach (long fibonacci in GeneradorNumeroPares (GeneradorFibonacci(6)))
  11.             {
  12.                 Console.WriteLine (fibonacci);
  13.             }
  14.         }
  15.        
  16.          // Retorna elemento por elemento de la serie Fibonacci
  17.         // hasta la cantidad especificada en el argumento:
  18.         private static IEnumerable<long> GeneradorFibonacci(long cantidadSerie)
  19.         {
  20.             // Por cada iteración retorna el valor de la serie actual,
  21.             // realiza los cálculos necesarios para generar el siguiente
  22.             // valor de la serie:
  23.             for (int i = 0, fibAnterior = 1, fibActual = 1; i < cantidadSerie; ++i)
  24.             {
  25.                 // Retorna el valor actual de la serie Fibonacci:
  26.                 yield return fibAnterior;
  27.                
  28.                 int fibNuevo = fibAnterior + fibActual;
  29.                
  30.                 fibAnterior = fibActual;
  31.                 fibActual = fibNuevo;
  32.             }
  33.         }
  34.        
  35.         // Método que comprueba si los números generados por la serie
  36.         // Fibonacci son pares:
  37.         private static IEnumerable<long> GeneradorNumeroPares(IEnumerable<long> fibonaccis)
  38.         {
  39.             foreach (long fibonacci in fibonaccis)
  40.             {
  41.                 if ((fibonacci % 2) == 0)
  42.                 {
  43.                     yield return fibonacci;
  44.                 }
  45.             }
  46.         }
  47.     }
  48. }