使用递归在Javascript中对整数数组求和

我是递归新手,想对一个整数数组求和。


sumOfInts([1,2,3,4]) //expected output: 10

我的尝试:


function sumOfInts(array) {

  let counter = 0;

  let result = 0;

  if (counter === array.length - 2) {

    return result + array[array.length - 1]

  } else {

    result += array[counter];

    counter++;

  }

}


我尝试了一些方法来让函数在 else 语句中调用自身,但到目前为止都失败了。


现在,该函数不返回任何内容。


慕哥6287543
浏览 159回答 4
4回答

沧海一幻觉

我对数组进行切片,直到它变空,并用它的第一个元素增加总和值。由于您正在学习递归,我认为此解决方案将帮助您更好地理解递归。但是,考虑到良好的实践和性能,您应该更喜欢reduce。function sumOfInts(array, sum = 0) {    if (array.length === 0) return sum;    return sumOfInts(array.slice(1), sum + array[0]);}

繁花如伊

除非这是一个练习,否则您不需要递归。恕我直言Array#reduce更适合这项任务:const sum = xs => xs.reduce((tot, x) => tot + x, 0);sum([1,2,3,4]);//=> 10使用递归,您应该利用参数解构和默认值:const sum = ([x = 0, ...xs]) => xs.length === 0 ? x : x + sum(xs);sum([1,2,3,4]);//=> 10

拉莫斯之舞

这是一个带有经典函数式编程成分的版本:const head = ([h]) => h;                                      const tail = ([, ...t]) => t;                                   const sumOfInts = (array) =>  array.length == 0 ? 0 : head(array) +                                                                                                                sumOfInts(tail(array))                                                                         sumOfInts([1,2,3,4])// => 10

心有法竹

希望这可以帮助。function sumOfInts(arr) {  if (arr.length > 0){    //Check if length is greater than 0 .    //If yes then get all the element but not the last    //And recursively pass the spliced array to the sumOfInts.    return sumOfInts(arr.splice(0,arr.length - 1)) + arr[0];   }  return 0;}let sum = sumOfInts([1,2,3,4,5]) ;console.log(sum);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript