@marshall.***mings
Рекурсия в Java — это процесс, при котором метод вызывает сам себя. Когда метод вызывается внутри самого себя, он помещает текущее выполнение в стек вызовов и начинает новое выполнение метода. Этот процесс продолжается до тех пор, пока не будет достигнуто определенное условие остановки.
Рассмотрим пример простой рекурсивной функции для вычисления факториала числа:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
public class Factorial { public static int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n-1); } } public static void main(String[] args) { int result = factorial(5); System.out.println(result); } } |
В этом примере метод factorial
вызывает сам себя с аргументом n-1
, пока n
не станет равным 0. Затем он возвращает результат n * factorial(n-1)
. Этот процесс продолжается до тех пор, пока не будет достигнуто условие остановки (в данном случае, когда n
станет равным 0), и значение факториала возвращается обратно по стеку вызовов.
Рекурсия полезна в задачах, которые естественно разделяются на более мелкие подзадачи. Однако следует быть осторожным, чтобы избежать бесконечной рекурсии, когда не достигается условие остановки.