Develop

memoize 적용한 factorial, fibonacci

Kyeongti 2021. 9. 13. 14:37

Fibonacci 함수

 

const memoFibo = memoizeFibonacci();
memoFibo(7);
memoFibo(10);

 

function memoizeFibonacci() {
  const save = {};
  return function fibonacci(number) {
    if (number < 1) return 0;
    if (number === 1) return 1;
    const saved1 = save[number - 1] || fibonacci(number - 1);
    const saved2 = save[number - 2] || fibonacci(number - 2);
    const result = saved1 + saved2;
    save[number] = result;

    return result;
  }
}

 

Factorial함수

function memoizeFactorial() {
  const save = {};
  return function factorial(number) {
    if (number === 1) return 1;
    const saved = save[number - 1] || memo(number - 1);
    const result = number * saved;
    save[number] = result;

    return result;
  };
}

const memoizeFact = memoizeFactorial();
memoizeFact(7);
memoizeFact(9);