memoize 적용한 factorial, fibonacci
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);