Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/415.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 返回js中最多n个数的1,2,3之和_Javascript_Recursion - Fatal编程技术网

Javascript 返回js中最多n个数的1,2,3之和

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); }

有人问我一个问题,写一个闭包函数,它应该返回提供的输入和,输入可以是一个参数,最多n。 所以用户可以调用
第(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这是最近询问的一个采访问题。因此,是的,这更多的是一种学习,而不是生产代码