πŸ˜ˆΒ μ–΄μ œ λ‚΄μš© 정리


μž¬κ·€μ™€ μŠ€νƒ

Untitled

ν•¨μˆ˜λ₯Ό μ‹€ν–‰ν•˜κ²Œ 되면 call stack에 μ „μ—­μ‹€ν–‰ μ»¨ν…μŠ€νŠΈκ°€ μŒ“μ΄κ³  ν˜ΈμΆœν•œ ν•¨μˆ˜κ°€ ν•˜λ‚˜ν•˜λ‚˜ μŒ“μ΄κ²Œ 됨 β†’ :LIFO λ§ˆμ§€λ§‰μœΌλ‘œ μ „μ—­μ‹€ν–‰ μ»¨ν…μŠ€νŠΈκ°€ 제거된 λ’€ μ’…λ£Œ

callstack: LIFO

ν•¨μˆ˜ ν•˜λ‚˜λ‹Ή ν•˜λ‚˜μ˜

μ½œμŠ€νƒ > μ „μ—­ > ν•¨μˆ˜ μ‹€ν–‰ μ»¨ν…μŠ€νŠΈ

ν•¨μˆ˜ 내뢀에 쀑첩 호좜이 μžˆμ„ λ•ŒλŠ” μ•„λž˜μ™€ 같은 μ ˆμ°¨κ°€ μˆ˜ν–‰λ©λ‹ˆλ‹€.

const memoFibo = (n) => {
  if (n <= 0) return 0;
  if (n <= 2) return 1;
  if (memoFibo.cache[n]) {
    return memoFibo.cache[n];
  } else {
    return (memoFibo.cache[n] = memoFibo(n - 1) + memoFibo(n - 2));
  }
};

β‡’ fucntion은 κ°μ²΄μ΄κΈ°λ•Œλ¬Έμ— 이게 κ°€λŠ₯ν•œκ²λ‹ˆλ‹€β€¦

ν• λ‹Ήμ—°μ‚°μžλŠ” 값을 λ°˜ν™˜ν•©λ‹ˆλ‹€

cache에 μ €μž₯ν•˜λ©΄μ„œ 값을 λ°˜ν™˜ν•¨

else λ§ˆμ§€λ§‰