프로그래밍/Python

[Python] stackoverflow 해결 (maximum recursion depth)

Beginner:) 2021. 8. 10.
320x100

- 예제 코드

아래는 1000개정도의 함수를 재귀한다.

def func(n):
    print(n)
    if n<1:
        return
    else:
        return func(n-1)
func(1000)

 

- 결과

1000 ~ 5 정도까지 내려갈때 즈음에 아래와 같은 에러가 발생한다.

RecursionError: maximum recursion depth exceeded while calling a Python object

 

maximum recursion depth가 뭔지 알기위해 터미널에서 아래와 같이 명령어를 실행해본다.

import sys
print(sys.getrecursionlimit())

재귀호출의 한계가 1000으로 설정되어있다.

 

get이 있다면 set도 있을것이다.

 

아래와같이 코드를 작성하고 다시 실행해본다.

import sys
sys.setrecursionlimit(1200)
def func(n):
    print(n)
    if n<1:
        return
    else:
        return func(n-1)
func(1000)

 

 

모든 재귀함수는 반복문으로 가능하단 말이 있다.

 

위의 경우는 특수한 경우가 아니고선 다른 방법을 찾자.

 

DP 또는 Memoization 등이 있다.

반응형

댓글