함수 호출 정보와 파라미터 등은 프로그램의 메모리 영역 중 스택 영역에 할당됩니다. 스택 영역은 실제 물리 메모리 제한과는 별개로 기본적으로 작게 설정되어 있습니다. 윈도우즈의 경우 1MB, 리눅스의 경우 8MB라고 합니다.
이 문제의 경우 10만에서 0을 찾아가는 경로를 생각해보면 10만, 99999, 99998, 99997... 이렇게 찾아내려가는 수밖에 없는데, 이 경우 재귀호출이 매우 깊어지게 됩니다. 이를 계속 반복하다 보면 결국 스택의 메모리 제한을 초과하게 됩니다.
VS의 경우 디버그 모드로 실행해보면 이런 경우 Stack Overflow라는 메시지를 보여줍니다.
wiz9243 6년 전