Рекурсия Java: рекурсивные методы (с примерами)

В этом руководстве вы узнаете о рекурсивной функции Java, ее преимуществах и недостатках.

В 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()метод.

Работа факторной программы

Изображение ниже даст вам лучшее представление о том, как выполняется факториальная программа с использованием рекурсии.

Факториальная программа с использованием рекурсии

Преимущества и недостатки рекурсии

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

С другой стороны, рекурсивное решение намного проще и требует меньше времени на написание, отладку и поддержку.

Рекомендуемая литература: каковы преимущества и недостатки рекурсии?

Интересные статьи...