在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/HTML/ js遞歸求和

js遞歸求和

A={
    value:1,
    items:[A,A,A] //items里面是A類型格式的對(duì)象
}

有什么好的方法,求出對(duì)象A里面所有value的總和

回答
編輯回答
菊外人
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;
  }
}

最終調(diào)用sumA求和即可。不知這樣是否符合你的要求?

sumA中的那個(gè)concat是為了尾遞歸優(yōu)化,不過(guò)我也不是很肯定這么寫(xiě)是不是就能進(jìn)行尾遞歸優(yōu)化。更易懂的版本:

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;
  }
}
2017年3月25日 04:06