using System.Collections.Generic;
public static void Main()
var list = new List<int> {1,2,3,4,5};
var resultado = Acumular(Combiner, 0, list);
Console.WriteLine(resultado);
public static int Acumular(Func<int, int, int> combiner, int nullValue, List<int> list)
var primeiro = list.First();
return combiner(primeiro, Acumular(combiner, nullValue, list));
public static int Combiner(int x, int acc)