// Created on savesnippets.com ยท https://savesnippets.com/4dyBF64372mTAa function memoize(fn) { const cache = new Map(); return function (...args) { const key = JSON.stringify(args); if (cache.has(key)) return cache.get(key); const result = fn.apply(this, args); cache.set(key, result); return result; }; } // Usage const slowFib = (n) => (n <= 1 ? n : slowFib(n - 1) + slowFib(n - 2)); const fastFib = memoize(slowFib); console.log(fastFib(40)); // instant after first call