Javascript 재귀함수 최대 한도

무슈·2019년 8월 9일
4

js에서의 최대 한도는 다음과 같은 함수를 이용해서 구할 수 있다.

function a(n) {
  try { return a(n + 1) }
  catch(e) { return n } 
}

console.log(a(0));

꼬리 재귀 함수다.
javascript에서는 함수 스택이 부족할 때의 오류를 try catch 문으로 처리할 수 있으므로 위와 같은 코드로 측정이 가능하다.

오류가 나지 않을 시 n에 1씩 더해 가면서 리턴 값을 1씩 늘린다. 오류가 날 시에는 n을 반환해 꼬리재귀로 그 n이 그대로 첫 함수에서도 반환된다. 즉 최대 함수 스택을 구하게 된다.

Firefox 에서는 21000 정도가 나왔다.

profile
\<>\

2개의 댓글

comment-user-thumbnail
2019년 8월 9일

무슈 혹시 크로크무슈?

답글 달기
comment-user-thumbnail
2019년 8월 9일

오호 이렇게 구할 수 있군요 흥미롭네요

답글 달기