Javascript 返回js中最多n个数的1,2,3之和
有人问我一个问题,写一个闭包函数,它应该返回提供的输入和,输入可以是一个参数,最多n。 所以用户可以调用Javascript 返回js中最多n个数的1,2,3之和,javascript,recursion,Javascript,Recursion,有人问我一个问题,写一个闭包函数,它应该返回提供的输入和,输入可以是一个参数,最多n。 所以用户可以调用 第(5)项或第(4)(3)项或第(1)(2)项……(n)项, 我使用递归编写了下面的函数,但遇到了一个问题,需要在末尾添加一个空括号,下面的函数才能工作 function sum(x) { return function (y) { if (y) { return sum(x + y); }
第(5)项或第(4)(3)项或第(1)(2)项……(n)项, 我使用递归编写了下面的函数,但遇到了一个问题,需要在末尾添加一个空括号,下面的函数才能工作
function sum(x) {
return function (y) {
if (y) {
return sum(x + y);
}
else {
return x;
}
}
}
// this result in 12 as I am using an empty parentheses at the end
console.log(sum(5)(6)(1)());
// below two will return output as [Function]
console.log(sum(5)(6)(1)(5)(6)(1));
console.log(sum(5));
有没有更好的方法来实现这一点?这是不可能的-例如,从表达式
sum(5)
,解释器如何知道结果应该是一个数值,而不是可以使用(6)
再次调用的函数?要么像现在这样做,然后再次调用该函数,要么在返回的函数上添加valueOf
或toString
方法,并将其强制为string。我希望这只是为了实验或学习,而不是为了生产代码。@Taplar这是最近询问的一个采访问题。因此,是的,这更多的是一种学习,而不是生产代码