EMZETT.
Войти

Рекурсия (recursion)

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

Подробнее: Каждый рекурсивный вызов кладёт новую запись в стек вызовов; без условия выхода (базового случая) это в итоге ведёт к StackOverflowError.

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

Подробности

См. также: методы, циклы, алгоритмы