프로그래밍/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())

[Python] stackoverflow 해결 (maximum recursion depth)

재귀호출의 한계가 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 등이 있다.

반응형