Упростите функцию.
int summation(int x, int y) {
if(x == y) return x;
return x + summation(x+1,y);
}
и используйте
summation(1, 10) + summation(15, 20);
на стороне клиента.
Вы можете сделать сторону клиента немного проще,добавив еще одну функцию, которая заботится о числах для пропуска.
int summation_with_skip(int x1, int x2, int x3, int x4) {
return summation(x1, x2) + summation(x3, x4);
}
и используйте
summation_with_skip(1, 10, 15, 20);
Если вам нужна логика для пропуска элементов в функции, вы можетеиспользуйте
int summation_with_skip(int x1, int x2, int x3, int x4)
{
if ( x1 > x4 )
{
return 0;
}
int s = summation(x1+1, x2, x3, x4)
if ( (x1 > x2) && (x1 < x3) )
{
return s;
}
else
{
return x1 + s;
}
}
Мне нравится идея передать все аргументы функции.