const memo = (fn) => {};
 
const plus = (a, b, c) => {
  console.log("plus", a, b, c);
  return a + b + c;
};
 
const divide = (a, b) => {
  console.log("divide", a, b);
  return a / b;
};
 
const memoPlus = memo(plus);
console.log(memoPlus(1, 2, 3)); // plus 1, 2, 3 -> 6
console.log(memoPlus(3, 1, 1)); // plus 3, 1, 1 -> 5
console.log(memoPlus(1, 2, 3)); // 6
 
const memoDivide = memo(divide);
console.log(memoDivide(4, 2)); // divide 4, 2 -> 2
console.log(memoDivide(6, 2)); // divide 6, 2 -> 3
console.log(memoDivide(4, 2)); // 2

**Ответ

const memo = (fn) => {
  let cache = {};
  return (...args) => {
    if (cache[args]) {
      return cache[args];
    } else {
      cache[args] = fn(...args);
      return cache[args];
    }
  };
};
 
const plus = (a, b, c) => {
  console.log("plus", a, b, c);
  return a + b + c;
};
 
const divide = (a, b) => {
  console.log("divide", a, b);
  return a / b;
};
 
const memoPlus = memo(plus);
console.log(memoPlus(1, 2, 3)); // plus 1, 2, 3 -> 6
console.log(memoPlus(3, 1, 1)); // plus 3, 1, 1 -> 5
console.log(memoPlus(1, 2, 3)); // 6
 
const memoDivide = memo(divide);
console.log(memoDivide(4, 2)); // divide 4, 2 -> 2
console.log(memoDivide(6, 2)); // divide 6, 2 -> 3
console.log(memoDivide(4, 2)); // 2

Назад