Вы можете использовать следующее:
public int SumOfEvenNumbersInRange(int start, int end, IList<int> elements)
{
int CreateSum(int current, int sum)
{
if (current > end)
{
return sum;
}
else
{
elements.Add(current);
return sum + current + CreateSum(current + 2, sum);
}
}
if (Math.Abs(start) % 2 == 0)
return CreateSum(start, 0);
return CreateSum(start + 1, 0);
}
Используется локальная функция для выполнения рекурсивной работы. Затем вы можете использовать его следующим образом:
var elements = new List<int>();
var sum = SumOfEvenNumbersInRange(7, 13, elements);
if (elements.Count == 0)
{
elements.Add(0);
}
Console.WriteLine($"{string.Join(" + ", elements)} = {sum}");
Если использовать его, как указано выше, выведите следующее:
8 + 10 + 12 = 30 // SumOfEvenNumbersInRange(7, 13, elements)
2 + 4 + 6 + 8 = 20 // SumOfEvenNumbersInRange(2, 8, elements)