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

У цьому підручнику ви дізнаєтесь про рекурсивну функцію Java, її переваги та недоліки.

У Java метод, який викликає себе, відомий як рекурсивний метод. І цей процес відомий як рекурсія.

Прикладом фізичного світу може бути розміщення двох паралельних дзеркал один напроти одного. Будь-який об'єкт між ними буде відображатися рекурсивно.

Як працює рекурсія?

Робота Java-рекурсії

У наведеному вище прикладі ми викликали recurse()метод зсередини mainметоду. (звичайний виклик методу). І всередині методу repeatse () ми знову викликаємо той самий метод repeatse. Це рекурсивний дзвінок.

Для того, щоб зупинити рекурсивний виклик, нам потрібно надати деякі умови всередині методу. В іншому випадку метод буде викликатися нескінченно.

Отже, ми використовуємо оператор 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()методу.

Робота факторної програми

Зображення нижче дасть вам краще уявлення про те, як програма факторіалів виконується за допомогою рекурсії.

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

Переваги та недоліки рекурсії

Коли здійснюється рекурсивний виклик, у стеку виділяються нові місця зберігання змінних. Оскільки кожен рекурсивний виклик повертається, старі змінні та параметри видаляються зі стеку. Отже, рекурсія зазвичай використовує більше пам'яті і, як правило, повільна.

З іншого боку, рекурсивне рішення набагато простіше і займає менше часу для написання, налагодження та обслуговування.

Рекомендована література: Які переваги та недоліки рекурсії?

Цікаві статті...