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));
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.