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

В горния пример извикахме recurse()
метода отвътре на main
метода. (нормално извикване на метод). И вътре в метода rekurse () отново извикваме същия метод на рекурсив. Това е рекурсивно повикване.
За да спрем рекурсивното повикване, трябва да предоставим някои условия в метода. В противен случай методът ще бъде извикан безкрайно.
Следователно, ние използваме оператора 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()
. По време на следващото рекурсивно повикване 3 се предава на factorial()
метода. Този процес продължава, докато n е равно на 0.
Когато n е равно на 0, if
операторът връща false, следователно 1 се връща. И накрая, натрупаният резултат се предава на main()
метода.
Работа на Факториална програма
Изображението по-долу ще ви даде по-добра представа за това как се изпълнява факториалната програма с помощта на рекурсия.

Предимства и недостатъци на рекурсията
Когато се направи рекурсивно повикване, в стека се разпределят нови места за съхранение на променливи. Тъй като всяко рекурсивно повикване се връща, старите променливи и параметри се премахват от стека. Следователно рекурсията обикновено използва повече памет и обикновено е бавна.
От друга страна, рекурсивното решение е много по-просто и отнема по-малко време за писане, отстраняване на грешки и поддръжка.
Препоръчително четене: Какви са предимствата и недостатъците на рекурсията?