using System; using System.Collections.Generic; namespace Articulos.Cap04.Secuencias { public sealed class FibonacciPares { public static void Main() { foreach (long fibonacci in GeneradorNumeroPares (GeneradorFibonacci(6))) { Console.WriteLine (fibonacci); } } // Retorna elemento por elemento de la serie Fibonacci // hasta la cantidad especificada en el argumento: private static IEnumerable GeneradorFibonacci(long cantidadSerie) { // 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 < cantidadSerie; ++i) { // Retorna el valor actual de la serie Fibonacci: yield return fibAnterior; int fibNuevo = fibAnterior + fibActual; fibAnterior = fibActual; fibActual = fibNuevo; } } // Método que comprueba si los números generados por la serie // Fibonacci son pares: private static IEnumerable GeneradorNumeroPares(IEnumerable fibonaccis) { foreach (long fibonacci in fibonaccis) { if ((fibonacci % 2) == 0) { yield return fibonacci; } } } } }