首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在JavaScript中递归计算整数数组的和

在JavaScript中递归计算整数数组的和
EN

Stack Overflow用户
提问于 2018-07-02 00:09:27
回答 7查看 3.2K关注 0票数 -1

我想写一个JavaScript程序来计算递归的整数数组的和。

输入:1,2,3,4,5,6

输出:21

function calculateSum(array) {
    if (array instanceof Array){
        if (!array.some(isNaN)) {
            var total = 0;

            array.forEach(function (value) {
                total += value;
            });

            return total;
        }
        return "Provide an Array with only Numeric Values";
    }

    return "Please provide an Array";
}

但我正在寻找一种使用递归的解决方案。

编辑:我开始做上面的练习来练习递归。我很难弄明白这一点。

提前表示感谢。

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2018-07-02 00:19:13

要使用递归,你只需要一个基本情况和方法,将输入分解成一些你可以递归的更小的东西。

长度为1的数组的和就是arr[0],对吗?所以这是一个合理的基本情况。对于较大的数组,和是一个元素加上所有其他元素的和。这就是你的另一个例子:arr[0] + sum(everything else)

现在,您可以仅使用这两种情况编写一个简单的函数:

let arr = [1, 2, 3, 4, 5, 6] 

function add(arr) {
    if (arr.length == 1) return arr[0] // base case
    return arr[0] + add(arr.slice(1))  // recurse
}
console.log(add(arr))

这个想法很简单,你可以用一行代码来表达它:

const add = (arr) =>  arr.length == 1 ?  arr[0] : arr[0] + add(arr.slice(1))
console.log(add([1, 2, 3, 4, 5, 6] ))

当然,您可能想要更好的错误检查,但这应该可以让您开始。

票数 3
EN

Stack Overflow用户

发布于 2018-07-03 02:58:00

析构语法允许使用优雅的函数表达式

const None =
  Symbol ()

const sum = ([ n = None, ...rest ]) =>
  n === None
    ? 0
    : n + sum (rest)

console.log
  ( sum ([])               // 0
  , sum ([ 1 ])            // 1
  , sum ([ 1, 2 ])         // 3
  , sum ([ 1, 2, 3 ])      // 6
  , sum ([ 1, 2, 3, 4 ])   // 10
  )

票数 3
EN

Stack Overflow用户

发布于 2018-07-02 00:23:36

现在可以使用递归来查找(N+1)元素数组的和,因为它只是最后一个元素加上前面N个元素的和,这是您已经知道/计算过的。

附上了一个示例。请访问wikipedia了解更多信息。

let arr = [10,100,1000,10000];
function sum(array){
  if(array.length === 1){
    return array[0];
  }else{
    return array[array.length-1] + sum(array.slice(0,array.length-1));
  }
}

console.log(sum(arr));

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51124929

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档