当前位置: 首页 > 编程笔记 >

在JavaScript中使用递归求和数组的修改后的版本

衡安晏
2023-03-14
本文向大家介绍在JavaScript中使用递归求和数组的修改后的版本,包括了在JavaScript中使用递归求和数组的修改后的版本的使用技巧和注意事项,需要的朋友参考一下

假设,我们需要编写一个递归函数,该求和函数将Numbers数组的所有元素相加,但有一个转折,而转折是我们编写的递归函数不能初始化任何额外的变量(内存)。

就像我们不能使用变量来存储总和或保持数组索引的计数一样,所有这些都必须使用我们已经拥有的变量。

这是解决方案-

我们已经有一个数组,可以使用它的第一个元素(即,索引为零的元素来保存递归和)。

方法是我们反复从数组中弹出一个元素,并将其添加到数组的第一个元素,直到只剩下一个元素。

当我们只剩下一个元素时,它将是数组的累加和,然后我们将其返回。该方法的代码将是-

示例

const recursiveSum = arr => {
   if(arr.length > 1){
      arr[0] += arr.pop();
      return recursiveSum(arr);
   };
   return arr[0];
};
console.log(recursiveSum([1,2,3,4]));
console.log(recursiveSum([1,2,3,4,3,6,3,32,7,9,5]));
console.log(recursiveSum([]));

输出结果

控制台中的输出将为-

10
75
undefined
 类似资料:
  • 问题内容: 我有一个我要为类创建的程序,该程序使用递归返回数组中所有整数的总和。到目前为止,这是我的程序: 但是,我相信我得到了三个都相关的错误,但是我不知道为什么它会找到一种null类型: 问题答案: 该解决方案比看起来简单,请尝试以下操作(假设数组的长度为非零): 这样称呼它:

  • 我正在C中实现合并排序。我有一个合并函数-和一个mergeSort函数-。 如果对原始数组的前半部分和后半部分进行排序(例如:),则合并排序可以很好地工作。这是因为我的merge函数无论在什么情况下都要传递原始数组,并且当它被赋予2个排序数组时(正如预期的那样),它可以工作。我的问题是他们什么时候不是。每次调用merge时,我的原始数组都没有被修改,尽管我已经对它进行了编程。有人能知道我的问题在哪

  • 问题内容: 我有以下字典: 我想将一个条目附加到key1-> key2-> key3上,其值为’blah’,产生: 我正在寻找一种与键的数量无关的通用解决方案,即即使不存在从key3向下的键,key1-> key2-> key3-> key4-> key5也应该起作用。这样我得到: 提前致谢。 问题答案: 您可以使用该函数遍历一系列嵌套字典: 演示: 当密钥不存在时,此版本引发异常: 但您可以替换

  • 我刚刚开始学习递归,并能够使用它编写一个简单的阶乘程序,没有太多问题。现在我正在尝试编写一个递归方法,该方法以相反的顺序写入数组,但我不知道我做错了什么。我错过了什么?非常感谢。

  • 那么我如何使用这个pair类和我的方法来找到最小值和最大值。

  • 我正在练习并试图写一个递归数组扁平化函数。代码在这里: 问题是,如果我将一个数组或嵌套数组传递给它,就会出现“超出最大调用堆栈大小”错误。我做错了什么?