안녕하세요! 오늘은 Python에서 자주 발생하는 재귀 오류(RecursionError)와 이를 해결하는 방법에 대해 이야기해볼게요. 재귀 호출이 너무 깊어지면 이 오류가 발생하는데요, 여러 가지 해결책이 있습니다.
Python의 기본 재귀 깊이는 1000으로 제한되어 있어요. 이 값을 늘릴 수는 있지만, 이는 일시적인 해결책일 뿐입니다. 다음과 같이 설정할 수 있어요:
import sys
sys.setrecursionlimit(1500) # 원하는 깊이로 조정
재귀 대신 반복문을 사용해서 문제를 해결할 수 있는 경우가 많습니다. 예를 들어, 피보나치 수열을 계산할 때 재귀 대신 반복문을 사용할 수 있어요.
def fibonacci(n):
a, b = 0, 1
for _ in range(n):
a, b = b, a + b
return a
재귀 함수에서 같은 값을 여러 번 계산하는 경우가 많죠? 이럴 때는 메모이제이션을 활용해서 성능을 개선할 수 있습니다. functools.lru_cache를 사용할 수 있어요.
from functools import lru_cache
@lru_cache(maxsize=None)
def fibonacci(n):
if n < 2:
return n
return fibonacci(n-1) + fibonacci(n-2)