https://school.programmers.co.kr/learn/courses/30/lessons/12900
위의 프로그래머스 테스트 문제를 풀다가 이유 모를 런타임에러(Runtime Error)를 맞이하였다. 문제는 굉장히 단순한 피보나치수열 계열의 문제였고, 단순히 재귀함수로 풀기에는 계산복잡도가 크기 때문에 DP/메모이제이션(memoization)을 적용하였다. 그래도 에러는 여전히 발생하였다..
결론부터 얘기하면, 파이썬의 재귀함수의 최대 재귀길이는 1000으로 제한되어 있다. 따라서 조금만 많은(>1000) 재귀호출이 발생한다면 런타임에러가 발생한다.
이를 해결하기 위해서는 아래와 같은 재귀길이 설정이 반드시 필요하다.
import sys
sys.setrecursionlimit(10 ** 6)