def greet():
print("Hello")
greet()
greet()
, которая будет бесконечно выводить "Hello". В конечном итоге это приведет к ошибке RecursionError
, так как будет превышена максимальная глубина рекурсии, установленная Python. Программа не остановится сама по себе, пока не будет прервана операционной системой или средой выполнения.
Вопрос: Что произойдет при выполнении следующего кода?
def greet():
print("Hello")
greet()
greet()
Ответ: Этот код приведет к ошибке RecursionError: maximum recursion depth exceeded
.
Объяснение:
greet()
вызывает саму себя. Это называется рекурсией.greet()
добавляет новый кадр в стек вызовов.RecursionError
.Как исправить: Чтобы избежать RecursionError
, необходимо добавить базовый случай (условие остановки) в рекурсивную функцию. В данном тривиальном примере, можно просто убрать вызов greet()
внутри функции, если цель просто напечатать "Hello" один раз. Если же подразумевалась какая-то более сложная логика, требующая рекурсии, необходимо продумать, при каких условиях рекурсия должна завершиться.