본문 바로가기
프로그래밍언어/파이썬[Error]

[파이썬][Error] 069. RecursionError - maximum recursion depth exceeded

by about_IT 2025. 5. 29.
728x90

RecursionError: maximum recursion depth exceeded 오류는 파이썬에서 재귀 호출이 너무 깊어져 스택 한도를 초과했을 때 발생합니다. 파이썬은 무한 재귀를 방지하기 위해 기본적으로 최대 재귀 깊이를 약 1000번으로 제한하고 있습니다.

이 오류는 종료 조건이 없는 재귀 함수, 순환 참조에 의한 무한 호출, 또는 재귀 알고리즘의 깊이가 실제로 매우 깊은 경우에 발생합니다. 단순한 실수로 인한 오류일 수도 있고, 알고리즘의 구조적 개선이 필요한 경우도 있습니다.

● 오류 발생 예시

def recurse():
    return recurse()

recurse()

종료 조건이 없는 재귀 함수는 무한히 자신을 호출하다가 RecursionError를 발생시킵니다.

RecursionError: maximum recursion depth exceeded

● 해결 방법

  • 반드시 종료 조건을 명확하게 정의
  • 재귀를 반복문으로 변경 고려 (tail recursion → loop)
  • sys.setrecursionlimit()로 제한 완화 가능 (주의 필요)

● 예시 코드 (종료 조건 포함)

def factorial(n):
    if n == 0:
        return 1
    else:
        return n * factorial(n-1)

● 자주 하는 실수

  • 종료 조건을 놓치거나 잘못 구현
  • 재귀 구조가 예상보다 깊어지는 경우
  • 순환 참조로 인해 예기치 않게 무한 재귀 발생

● 결론

RecursionError - maximum recursion depth exceeded는 재귀 호출이 과도하게 반복될 때 발생합니다. 종료 조건을 철저히 구현하고, 반복문으로의 변환을 고려하여 안정적인 재귀 사용을 권장합니다.

728x90