Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/466.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 如何将递归函数的每次迭代返回到另一个函数中_Javascript_Arrays_Recursion - Fatal编程技术网

Javascript 如何将递归函数的每次迭代返回到另一个函数中

Javascript 如何将递归函数的每次迭代返回到另一个函数中,javascript,arrays,recursion,Javascript,Arrays,Recursion,我写了一个基于三角数的递归函数。当许多人被传递到函数中时,它返回他们之间可能的连接数。这很好,但我希望将此函数的每次迭代都返回到一个数组中,因为我计划在屏幕上显示此列表。这个新函数将返回一个数组,例如[1,3,6,10] 我不知道我是否可以在我现有的函数中实现这一点,或者我是否需要某种助手/辅助函数。传递回当前函数的返回值是人数(而不是连接数),因此我认为我需要在该函数中添加一个额外的参数,或者编写另一个参数来完全与它一起运行 看起来应该很简单,我已经在每次迭代中生成了一个值的控制台日志-问题是

我写了一个基于三角数的递归函数。当许多人被传递到函数中时,它返回他们之间可能的连接数。这很好,但我希望将此函数的每次迭代都返回到一个数组中,因为我计划在屏幕上显示此列表。这个新函数将返回一个数组,例如[1,3,6,10]

我不知道我是否可以在我现有的函数中实现这一点,或者我是否需要某种助手/辅助函数。传递回当前函数的返回值是人数(而不是连接数),因此我认为我需要在该函数中添加一个额外的参数,或者编写另一个参数来完全与它一起运行

看起来应该很简单,我已经在每次迭代中生成了一个值的控制台日志-问题是我需要将这些值添加到另一个数组中,并且只有在递归函数完成时才返回这个数组

我的函数代码如下:

功能连接(人数){
if(numberOfPeople==1){
返回0;
}
const returnVal=(连接(numberOfPeople-1)+(numberOfPeople-1));
console.log(returnVal);
返回值;
}
…所以我想我需要在这个函数中添加一个额外的参数

没错!类似于此(请参见所示的更改/添加):

函数连接(人数,数组=[]){
// -----------------------------^
让我们返回val;//
函数getConnections(numberOfPeople){
var连接=[];
(功能连接(人数){
if(numberOfPeople==1){
返回0;
}
returnVal=连接(numberOfPeople-1)+numberOfPeople-1;
连接。推送(返回值)
返回值
})(人数)
返回连接
}

console.log(getConnections(5))
这似乎有效,谢谢!请您更深入地解释一下这是如何工作的?这似乎是一个关闭的例子,如果我没有弄错,我特别不确定(numberOfPeople)在返回连接线前的括号中。请问您有没有可能解释一下?我已经试着解释了代码。请检查更新的答案。谢谢您花时间做这件事-现在有意义了。那么,(人数)让我困惑的一行是IIFE的一个例子?是的,在那一行我们调用IIFE函数并将numberOfPeople作为参数传递。
function connection(numberOfPeople, theArray = []) {
    // -----------------------------^

    let returnVal;                // <===
    if (numberOfPeople == 1) {
        returnVal = 0;            // <=== Didn't return here so we have a common
    } else {                      //      path at the end
        returnVal = (connection(numberOfPeople-1, theArray) + (numberOfPeople-1));
    // ---------------------------------------------^
    }
    console.log(returnVal);
    theArray.push(returnVal);     // <===

    return theArray;              // <===
}