Чтобы начать с конца, рекурсивный метод Sum выглядит следующим образом:
// version 3
public static int Sum(int startRange, int endRange)
{
if (endRange > startRange)
{
return endRange + Sum(startRange, endRange - 1);
}
if (endRange < startRange)
{
return startRange + Sum(endRange, startRange - 1);
}
return endRange;
}
Жесткое кодирование startRange равным 0 дает нам:
// version 2
public static int Sum(int range)
{
if (range > 0)
{
return range + Sum(0, range - 1);
}
if (range < 0)
{
return Sum(range, -1);
}
return range;
}
... и если вы хотите ограничить метод только положительными числами, знак не нужен:
// version 1
public static unsigned int Sum(unsigned int range)
{
if (range > 0)
{
return range + Sum(0, range - 1);
}
return range;
}
Надеюсь, это поможет лучше понять диапазоны суммирования чисел с помощью рекурсии.