首页 > 解决方案 > 使用递归对数组中的元素求和,即使它们是字符串

问题描述

必须创建一个函数来返回数组中元素的总和,但如果数组是

["a","b","c"] // output : abc    

到目前为止我有

 function calculateSumRecursion(array) {
          //your code
          if (array.length === 0 ) {
            return 0
          }
          
      return array[0] + calculateSumRecursion(array.slice(1))
    }

我发现了如何使用递归计算所有数字的总和,但是当它是一个字符串数组时

array = ["a","b","c"] 

它返回我

// abc0

因为if语句..有什么办法可以说

if (array.length === 0) return nothing instead of a 0 (that work only when it's an array of number?)

标签: javascriptarraysrecursion

解决方案


当长度为 1 时,您只需要return数组中的唯一值,而不是等到长度为 0。这样,您总是对兼容类型(数字或字符串)求和。请注意,如果使用空数组调用函数,您仍然需要测试 0 数组长度。在这种情况下,您需要选择要返回的内容;根据要求,它是 0。

function calculateSumRecursion(array) {
  if (array.length === 0) {
    return 0;
  }
  if (array.length === 1) {
    return array[0];
  }
  return array[0] + calculateSumRecursion(array.slice(1))
}

console.log(calculateSumRecursion([1, 2, 3, 4, 5]));
console.log(calculateSumRecursion(['a', 'b', 'c']));
console.log(calculateSumRecursion([]));


推荐阅读