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 등이 있다.
반응형
'프로그래밍 > 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 |
댓글