我已经回顾了其他关于堆栈溢出的帖子,正如我提到的,我试图使用递归找到数组的总和,如果它的所有数字都是[2,6,11,4,13,5],它工作得很好,但如果在数组中有字母,即["a","b","c"]它在末尾添加一个0给出"abc0"取下返回后的0返回abcundefined
我没有返回0,而是尝试返回数组,它适用于["a","b","c"]版本,但在[2,6,11,4,13,5]中返回的是concat而不是加法。提前感谢您的时间和帮助。=)
function calculateSumRecursion(array) {
console.log(array)
if(array.length === 0 ) return 0
return array[0]+calculateSumRecursion(array.slice(1))
}
如果你这样认为,你可以在有一个元素时停止。
function calculateSumRecursion(array) {
// just to improve the basic logic, there can be other cases which can be handled i.e. if the array is empty.
if ( array.length === 1 ) array[0]
return array[0] + calculateSumRecursion( array.slice(1) )
}
您可以通过简单地将停止条件更改为1个元素来解决这个问题。
function calculateSumRecursion(array) {
if (array.length < 1) throw "Can't calculate a sum of empty array";
if (array.length === 1) return array[0]
return array[0] + calculateSumRecursion(array.slice(1))
}
array = [1, 2, 3, 4, 5, 6]
console.log(calculateSumRecursion(array))
array = ["a", "b", "c", "d", "e"]
console.log(calculateSumRecursion(array))