Рекурсія (recursion)
Коротко: Метод, що викликає сам себе, щоб розбити задачу на менші підзадачі того самого роду, — завжди потрібен базовий випадок, інакше працює нескінченно.
Докладніше: Кожен рекурсивний виклик кладе новий запис у стек викликів; без умови виходу (базового випадку) це зрештою веде до StackOverflowError.
int factorial(int n) {
if (n <= 1) return 1;
return n * factorial(n - 1);
}