더북(TheBook)

3.3.3 재귀 함수

어떤 함수가 내부에서 자기 자신을 다시 호출하는 함수를 재귀 함수(recursive function)라고 합니다. 다음 코드를 콘솔에서 실행하면 다음과 같이 에러가 발생합니다.

let i = 0;
function recurse() {
  i++;
  recurse();
}
recurse();
Uncaught RangeError: Maximum call stack size exceeded

재귀 함수를 사용하다 보면 Maximum call stack size exceeded라는 에러 메시지를 자주 볼 수 있습니다. 호출 스택은 함수를 담을 수 있는 최대 크기가 정해져 있는데, 이 크기를 초과하는 경우에 해당 에러가 발생합니다. 재귀 함수에서 왜 이런 에러가 발생하는지 호출 스택으로 분석해 보겠습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.