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

В този урок ще научите за рекурсивната функция на Java, нейните предимства и недостатъци.

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

Работа на Факториална програма

Изображението по-долу ще ви даде по-добра представа за това как се изпълнява факториалната програма с помощта на рекурсия.

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

Предимства и недостатъци на рекурсията

Когато се направи рекурсивно повикване, в стека се разпределят нови места за съхранение на променливи. Тъй като всяко рекурсивно повикване се връща, старите променливи и параметри се премахват от стека. Следователно рекурсията обикновено използва повече памет и обикновено е бавна.

От друга страна, рекурсивното решение е много по-просто и отнема по-малко време за писане, отстраняване на грешки и поддръжка.

Препоръчително четене: Какви са предимствата и недостатъците на рекурсията?

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