Ответ
Бесконечная рекурсия без условия выхода приведет к переполнению стека вызовов (stack overflow). В большинстве языков программирования это вызывает исключение или аварийное завершение программы.
Что происходит технически:
- Каждый рекурсивный вызов добавляет новый фрейм в стек вызовов
- Стек имеет ограниченный размер (обычно 1-8 МБ в зависимости от языка и настроек)
- При исчерпании стека программа аварийно завершается
Пример на Python:
def infinite_recursion():
infinite_recursion() # Бесконечный вызов
# Вызовет: RecursionError: maximum recursion depth exceeded
infinite_recursion()
Как избежать:
- Всегда добавляйте базовый случай (base case)
- Убедитесь, что рекурсия сходится к базовому случаю
- Для глубокой рекурсии используйте итеративный подход или хвостовую рекурсию (если поддерживается)
Пример правильной рекурсии:
def factorial(n):
if n <= 1: # Базовый случай
return 1
return n * factorial(n - 1) # Рекурсивный случай