Выполнение кода или функции, вызывающих самих себя.
Основные элементы:
- Базовый случай: Условие, при котором рекурсия останавливается. Без него происходит бесконечная рекурсия.
- Рекурсивный случай: Часть функции, где происходит вызов самой себя, обычно с измененным аргументом.
Пример (вычисление факториала):
swift
Преимущества:
- Элегантное решение для задач, имеющих самоподобную структуру (например, обход деревьев).
- Более читаемый код в некоторых случаях.
Недостатки:
- Может потреблять много памяти (стек вызовов).
- Возможен переполнение стека при слишком глубокой рекурсии.
- Иногда менее производительно, чем итеративные решения.