为了账号安全,请及时绑定邮箱和手机立即绑定

js递归求和

js递归求和

慕神8447489 2019-03-12 17:15:09
A={    value:1,    items:[A,A,A] //items里面是A类型格式的对象}有什么好的方法,求出对象A里面所有value的总和
查看完整描述

1 回答

?
RISEBY

TA贡献1856条经验 获得超5个赞

function sum(arr) {

  var _sum = 0;

  arr.forEach(v => _sum += v);

  return _sum;

}


function sumA(A) {

  if(A.items && A.items.length) {

    return sum([A.value].concat(a.items.map(sumA)));

  } else {

    return A.value;

  }

}

最终调用sumA求和即可。不知这样是否符合你的要求?


sumA中的那个concat是为了尾递归优化,不过我也不是很肯定这么写是不是就能进行尾递归优化。更易懂的版本:


function sumA(A) {

  if(A.items && A.items.length) {

    var sum = A.value;

    for(let a of A.items) {

      sum += sumA(a);

    }

    return sum;

  } else {

    return A.value;

  }

}


查看完整回答
反对 回复 2019-03-25
  • 1 回答
  • 0 关注
  • 793 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信