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) [Python] stackoverflow 해결 (maximum recursion depth)](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
재귀호출의 한계가 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 등이 있다.
반응형
'프로그래밍 > Python' 카테고리의 다른 글
[Python] tensorflow cusolver64_11.dll, cudnn64_8.dll not found 해결 (0) | 2021.09.01 |
---|---|
[Python] Tensorflow cudart64 not found error 해결 (0) | 2021.09.01 |
[Python] 라인별 시간측정 (line profiler) (0) | 2021.08.10 |
[Python] 프로파일링 (실행시간, 특정함수 시간, 실행속도 확인) (0) | 2021.08.09 |
[Python] 특정구간 시간측정 (0) | 2021.08.09 |
댓글