트램폴린

수정일: 2026. 2. 5.

태그:
function isEven(n) {
  if (n === 0) return true;
  return () => isOdd(n - 1);
}

function isOdd(n) {
  if (n ===0) return false;
  return () => isEven(n - 1); 
}

// 트램폴린 실행기
function trampoline(fn) {
  while (typeof fn === 'function') {
    fn = fn();
  }
  return fn;
}

trampoline(() => isEven(10000));

위 코드를 재귀로 바꾼다면 아래와 같이 재귀적인 호출로 바꿀 수 있습니다.

//
function isEven(n){
if(n === 0) return true;
if(n === 1) return false;
return isEven(n-2);
}

트램폴린 형태를 사용하는 이유는 재귀적 호출이 아니기 때문에 callstack을 1로 유지할 수 있습니다.

물론 위의 함수는 트램폴린을 이해하기 위한 용도입니다.

실무환경에서는 2로 나누어 떨어지면 짝수이다. 라는 cpu 산술 명령어 하나로 계산할 수 있습니다.

(n:number) =>  n % 2 === 0