Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗jvPmFnRc 288 of 420 menu
◀ ▶

Рекурсия в Java

В программировании есть такое понятие, как рекурсия - это когда метод вызывает сам себя. Давайте посмотрим на примере. Выведем с помощью рекурсии числа от 1 до 10.

Номер шага передадим параметром. Глобальной переменной здесь нет: каждый следующий вызов получает свое число:

public class Main { static void func(int i) { System.out.println(i); if (i < 10) { func(i + 1); // здесь метод вызывает сам себя } } public static void main(String[] args) { func(1); } }

Давайте обсудим, как работает этот код.

Метод func выводит параметр i. Если i меньше 10, метод вызывается снова и передает число на единицу больше. Так вызовы идут, пока i не достигнет 10.

Учтите, что в нашем случае нельзя убрать условие. Если это сделать, получится бесконечный вызов методов.

Тот же прием считает факториал. Метод возвращает 1 для единицы и произведение числа на факториал предыдущего:

public class Main { static int fact(int num) { if (num == 1) { return 1; } return num * fact(num - 1); } public static void main(String[] args) { System.out.println(fact(5)); // выведет 120 } }

Давайте с помощью рекурсии последовательно выведем элементы массива. Индекс тоже передается параметром. Пока индекс меньше длины, печатаем элемент и вызываем метод для следующего индекса:

public class Main { static void show(int[] arr, int i) { if (i < arr.length) { System.out.println(arr[i]); show(arr, i + 1); } } public static void main(String[] args) { int[] arr = {1, 2, 3}; show(arr, 0); } }

Проще всего перебрать элементы массива циклом. Приведенный пример показывает работу рекурсии на простом случае. У рекурсии обязательно есть условие остановки, иначе вызовы не закончатся.

Создайте рекурсивный метод, который считает сумму чисел от 1 до переданного числа.

Дан массив:

int[] arr = {1, 2, 3, 4, 5};

С помощью рекурсии выведите элементы этого массива на экран.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить