В этом руководстве вы узнаете о рекурсивной функции Java, ее преимуществах и недостатках.
В Java метод, который вызывает сам себя, известен как рекурсивный метод. И этот процесс известен как рекурсия.
В качестве примера физического мира можно поместить два параллельных зеркала, обращенных друг к другу. Любой объект между ними будет отражаться рекурсивно.
Как работает рекурсия?

В приведенном выше примере мы вызвали recurse()
метод изнутри main
метода. (обычный вызов метода). И внутри метода recurse () мы снова вызываем тот же метод рекурсии. Это рекурсивный вызов.
Чтобы остановить рекурсивный вызов, нам нужно предоставить некоторые условия внутри метода. В противном случае метод будет вызываться бесконечно.
Следовательно, мы используем оператор if… else (или аналогичный подход) для завершения рекурсивного вызова внутри метода.
Пример: факториал числа с использованием рекурсии
class Factorial ( static int factorial( int n ) ( if (n != 0) // termination condition return n * factorial(n-1); // recursive call else return 1; ) public static void main(String() args) ( int number = 4, result; result = factorial(number); System.out.println(number + " factorial = " + result); ) )
Выход :
4 факториал = 24
В приведенном выше примере у нас есть метод с именем factorial()
. factorial()
Вызывается из main()
метода. с числовой переменной, переданной в качестве аргумента.
Здесь обратите внимание на утверждение,
return n * factorial(n-1);
factorial()
Метод вызывает себя. Изначально значение n внутри равно 4 factorial()
. Во время следующего рекурсивного вызова factorial()
методу передается 3 . Этот процесс продолжается до тех пор, пока n не станет равным 0.
Когда n равно 0, if
оператор возвращает false, следовательно, возвращается 1. Наконец, накопленный результат передается в main()
метод.
Работа факторной программы
Изображение ниже даст вам лучшее представление о том, как выполняется факториальная программа с использованием рекурсии.

Преимущества и недостатки рекурсии
Когда выполняется рекурсивный вызов, в стеке выделяются новые места для хранения переменных. Когда каждый рекурсивный вызов возвращается, старые переменные и параметры удаляются из стека. Следовательно, рекурсия обычно использует больше памяти и обычно выполняется медленно.
С другой стороны, рекурсивное решение намного проще и требует меньше времени на написание, отладку и поддержку.
Рекомендуемая литература: каковы преимущества и недостатки рекурсии?