【发布时间】:2018-08-22 01:27:14
【问题描述】:
我遇到了这个有趣的问题。编写一个javascript函数,通过多次调用同一个函数,返回传递给它的所有参数的总和。
以下是函数的调用方式 -
sum(1, 2, 3, 4);
sum(1, 2)(3, 4);
sum(1, 2)(3)(4);
sum(1, 2, 3)(4);
sum(1)(2, 3, 4);
上面的所有调用都应该工作并返回 10。
这是我到目前为止所写的内容,但它只适用于前两个函数调用sum(1, 2, 3, 4) 和sum(1, 2)(3, 4),其余的都在床上。
const arr = [];
function sum(...args) {
if (args.length === 4) {
return args.reduce((acc, curr) => {
return (acc = acc + curr);
}, 0);
} else {
arr.push(...args);
return function(...args) {
arr.push(...args);
return sum(...arr);
};
}
}
请有人帮帮我,这让我发疯了。
谢谢!
【问题讨论】:
-
允许任意数量的调用会有问题,因为要使链接工作,您需要返回一个函数。但在某些时候,您需要返回一个带有最终结果的数字。
-
这只能使用特定数量的参数(在本例中为 4)。
标签: javascript recursion closures