Рекурсия Java

Рекурсия - это средство, которое позволяет методу вызывать самого себя. Такой метод называется рекурсивным.

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

Рекурсию можно сравнить с подзорной трубой, которую раскладывают до нужного состояния, а потом складывают обратно.

В следующем примере показана реализация подсчета факториала с помощью рекурсии на языке Java. Метод factorial() рекурсивно вызывает самого себя. В рекурсивном методе обязательно задавать точку возврата - условие при котором прекращается рекурсивный вызов метода. Если этого не сделать программа зациклится. В методе factorial() - это проверка на 1.

public class Recursion {
    static int factorial(int n) {
        int result;

        if (n < 2) {
            return 1;
        }
        result = factorial(n - 1) * n;
        return result;
    }

    public static void main(String[] args) {
        System.out.println("Факториал 3: " + factorial(3));
        System.out.println("Факториал 4: " + factorial(4));
        System.out.println("Факториал 5: " + factorial(5));
    }
}
Read also:
Comments