๐Ÿ“šย Reference


๐Ÿ“œย Chapter


โ€ฃ

BST (Binary Search Tree)

TCO (Tail Call Optimization)


TCO๊ฐ€ ์™ธ๋ฉด๋ฐ›๋Š” ์ฃผ์š” ์ด์œ 


TCO ์—†์ด ์žฌ๊ท€๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ์“ฐ๋Š” ๋ฒ• (Trampoline)


// ํŠธ๋žจํŽ„๋ฆฐ ํ•จ์ˆ˜ ์˜ˆ์‹œ
const trampoline = fn => (...args) => {
  let result = fn(...args);
  while (typeof result === 'function') {
    result = result();
  }
  return result;
};

// ํŒฉํ† ๋ฆฌ์–ผ ์˜ˆ์‹œ
const factorialFn = (n, acc = 1) => {
  if (n <= 1) return acc;
  return () => factorialFn(n - 1, n * acc); // ํ•จ์ˆ˜ ์ž์ฒด๋ฅผ ๋ฐ˜ํ™˜
};

const safeFactorial = trampoline(factorialFn);
console.log(safeFactorial(100000)); // ์Šคํƒ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ ์—†์ด ๊ณ„์‚ฐ ๊ฐ€๋Šฅ