Memoization란 ?
동일한 반복 계산을 처리할 때 이 처리값을 배열, 객체, 변수 등에 담아둬 반복 수행을 제거하는 처리 기법
function objectMemoization(n) {
let memo = {};
function factorial(number) {
if (number === 0) return 1;
else {
let saved = memo[number - 1] || factorial(number - 1);
let result = number * saved;
memo[number] = result;
return result;
}
}
return factorial(n);
}
function arrayMemoization(n) {
let memo = Array.from(Array(n + 1).fill(0));
function factorial(number) {
if (number === 0) return 1;
else {
let saved = memo[number - 1] || factorial(number - 1);
let result = number * saved;
memo[number] = result;
return result;
}
}
return factorial(n);
}