Как решить задачу с использованием рекурсии?
Подскажите, пожалуйста, как можно решить задачу с помощью рекурсии.
Описание: Необходимо реализовать метод factorial, вычисляющий факториал заданного натурального числа.
Факториал N вычисляется как 1 ⋅ 2 ⋅ ... ⋅ N. Необходимо использовать BigInteger.
Пример ввода 1: 1 Пример возвращаемого значения 1: 1
Пример ввода 2: 3 Пример возвращаемого значения 2: 6
Мое решение:
public static BigInteger factorial(int value) {
BigInteger result = BigInteger.ONE;
for (int i = 2; i <= value; i++)
result = result.multiply(BigInteger.valueOf(i));
return result;
}
Спасибо!
Ответы (1 шт):
Автор решения: Evgenii Izhboldin
→ Ссылка
В вашем решении нет рекурсии, рекурсия предполагает обращение функции к самой себе. Пример реализации:
public static BigInteger factorial(int value) {
if (value <= 1) return BigInteger.ONE;
return BigInteger.valueOf(value) * factorial(value - 1);
}
PS. Хотя стоит заметить, что вообще если есть решение без рекурсии, то как правило оно будет быстрее работать.