Простой способ решения моей проблемы будет следующий метод:сумма чисел внутри определенного диапазона с использованием рекурсии
public int sum(int num)
{
if(num == 1)
return 1;
else
return num + sum(num - 1);
}
Моя проблема начинается, когда я пытаюсь решить ту же проблему, используя следующее рекурсивное определение: «Сумма от 1 до N равна сумме от 1 до N/2 плюс сумма N/2 + 1 до N».
Я попытался следующие, но я застрял в бесконечном цикле ...
public int sum(int max, int base)
{
if(max == base)
return base;
else
return max/2 + sum(max/2 - 1, 1) + max + sum(max-1, max/2 + 1);
}
Я не могу показаться, чтобы найти путь вперед ...
как макс и база относятся к N? и что, если база больше, чем макс? – user3437460
Это ваша домашняя работа!? – Zorglube
Подсказка: начните с переименования параметров слишком низко. Потому что это то, что они на самом деле означают *; и один, который может помочь вам определить «правильный» способ вызова вашего метода. – GhostCat