首页 > 解决方案 > Javascript中递归求和数组的修改版本

问题描述

我在递归方面有点挣扎,刚刚解决了一个练习,你必须总结一个数组的所有元素。

function sumArr (para) {

  if (para.length === 0) {
    return 0
  }

  else {
    return para.pop() + sumArr(para)
    
  }
}

当被调用sumArr ( [2,3,4] )时,它返回 7,正如预期的那样。但是,现在我稍微改变了功能


function sumArr (para) {

  if (para.length === 0) {
    return 0
  }

  else {
    return para.pop() - sumArr(para)
    
  }
}

当被调用时sumArr ( [2,3,4] ),它返回 3,我无法理解。

感谢您阅读甚至帮助我更好地理解递归!

标签: javascriptrecursion

解决方案


您可以返回一个字符串而不是计算值并查看括号。

function sumArr(para) {
    if (para.length === 0) return 0;      

    let pop = para.pop(),
        temp = `(${pop} - ${sumArr(para)})`;

    console.log(pop, temp);
    return temp;
}

console.log(sumArr([2, 3, 4]));


推荐阅读