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

[파이썬][Error] 076. RecursionError - stack overflow in math function

by about_IT 2025. 5. 30.
728x90

RecursionError: stack overflow in math function 오류는 수학 함수를 재귀적으로 잘못 호출하여 파이썬의 호출 스택(stack)이 넘칠 때 발생합니다. 특히 잘못 정의된 수학 함수나 종료 조건이 없는 수학적 재귀 함수에서 자주 발생합니다.

파이썬은 함수 호출마다 스택 프레임을 추가하며, 기본적으로 약 1000개의 호출 깊이를 초과하면 RecursionError를 발생시킵니다. 재귀가 수학 연산 중 반복되거나 무한 루프에 빠지면 스택 오버플로우가 발생할 수 있습니다.

● 오류 발생 예시

def sqrt_recursive(x):
    return sqrt_recursive(x / 2)

sqrt_recursive(16)

이 함수는 종료 조건 없이 자신을 계속 호출하므로 스택이 가득 차면서 RecursionError가 발생합니다.

RecursionError: maximum recursion depth exceeded while calling a Python object

● 해결 방법

  • 반드시 종료 조건 포함
  • 재귀가 아닌 반복문 구조로 수학 함수 구현
  • math 모듈의 내장 함수 사용 고려 (예: math.sqrt)

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

def sqrt_recursive(x, epsilon=0.0001):
    if abs(x - 1) < epsilon:
        return x
    return sqrt_recursive((x + 1) / 2)

● 자주 하는 실수

  • 재귀 호출에서 종료 조건을 누락
  • 자기 자신을 수학적으로 계속 호출하며 수렴하지 않는 구조 생성
  • 이미 존재하는 수학 함수를 직접 재귀로 구현

● 결론

RecursionError - stack overflow in math function 오류는 수학적 재귀 구조에서 종료 조건이 없을 때 발생합니다. 가능하면 반복 구조를 사용하고, 기본 제공 수학 함수로 대체하는 것도 좋은 방법입니다.

728x90