Задача
Напишите функцию memoize(func), которая кеширует результаты вызова func по её аргументам (достаточно поддержки примитивных аргументов).
Пример
const slowSquare = (n) => {
// тяжёлое вычисление
return n * n;
};
const memoized = memoize(slowSquare);
memoized(4); // 16 — вычисляет и кеширует
memoized(4); // 16 — берёт из кеша, без повторного вызова slowSquare
memoized(5); // 25 — новый аргумент, вычисляетРешение
Оптимальное решение
// Простая мемоизация для примитивных аргументов const memoize = (func) => { const cache = {}; return (...args) => { const key = args.join(','); if (!cache[key]) { cache[key] = func(...args); } return cache[key]; }; };