243550
const tailFibonacci = (n, y = 1, result = 1) =>
n <= 1 ? result : tailFibonacci(n - 1, result, y + result);
const proxyFibonacci = new Proxy(tailFibonacci, {
apply(target, context, [n, ...args]) {
!Reflect.has(target, 'cache') && Reflect.set(target, 'cache', new Map());
const cache = Reflect.get(target, 'cache');
return cache.has(n)
? cache.get(n)
: cache.set(n, Reflect.apply(target, context, [n, ...args])).get(n);
},
});
console.log(proxyFibonacci(1));
console.log(proxyFibonacci(2));
console.log(proxyFibonacci(3));
console.log(proxyFibonacci(4));
console.log(proxyFibonacci(5));
console.log(proxyFibonacci(5));
console.log(proxyFibonacci(5));