Looking for java Answers? Try Ask4KnowledgeBase
Looking for java Keywords? Try Ask4Keywords

Java LanguageРекурсия


Вступление

Рекурсия происходит, когда метод вызывает себя. Такой метод называется рекурсивным . Рекурсивный метод может быть более кратким, чем эквивалентный нерекурсивный подход. Однако для глубокой рекурсии иногда итерационное решение может потреблять меньше пространства стека в потоке.

В этом разделе приведены примеры рекурсии на Java.

замечания

Проектирование рекурсивного метода

При разработке рекурсивного метода помните, что вам нужно:

  • Базовый вариант. Это определит, когда ваша рекурсия остановится и выведет результат. Базовый случай в факториальном примере:

    if (n <= 1) {
        return 1;
    }
    
  • Рекурсивный вызов. В этом заявлении вы повторно вызываете метод с измененным параметром. Рекурсивный вызов в приведенном выше факториальном примере:

    else {
        return n * factorial(n - 1);
    }
    

Выход

В этом примере вы вычисляете n-й факторный номер. Первыми факториалами являются:

0! = 1

1! = 1

2! = 1 x 2 = 2

3! = 1 x 2 x 3 = 6

4! = 1 x 2 x 3 x 4 = 24

...


Удаление Java и Tail-call

Текущие компиляторы Java (вплоть до Java 9) не выполняют исключение хвостового вызова. Это может повлиять на производительность рекурсивных алгоритмов, и если рекурсия достаточно глубокая, это может привести к сбоям StackOverflowError ; см. Глубокая рекурсия проблематична в Java

Рекурсия Связанные примеры