如何使用递归Javascript对这三个值求和

如何使用递归Javascript对这三个值求和,javascript,recursion,Javascript,Recursion,编写一个函数,返回所有节点(包括根节点)的总和 考虑到这一点,结果应该等于12 sumTheTreeValues = root => { console.log(root.value); if (root.left != null) { sumTheTreeValues(root.left); } if (root.right != null) { sumTheTreeValues(root.right); } }; 如果此代码将记录 7 1 4 如

编写一个函数,返回所有节点(包括根节点)的总和

考虑到这一点,结果应该等于12

sumTheTreeValues = root => {
  console.log(root.value);
  if (root.left != null) {
    sumTheTreeValues(root.left);
  }
  if (root.right != null) {
    sumTheTreeValues(root.right);
  }
};
如果此代码将记录

7
1
4

如何返回这些数字的总和而不必传递新参数

将左侧和右侧节点值添加到当前值并返回:

var节点={
数值:7,
左:{value:1,左:null,右:null},
右:{值:4,左:null,右:null}
};
sumTheTreeValues=root=>{
设value=root.value;
if(root.left!=null){
值+=总和TreeValues(root.left);
}
if(root.right!=null){
value+=总和treevalues(root.right);
}
返回值;
};

log(sumTheTreeValues(nodes))另一种方法是将函数包装到另一个函数中:

 function sum(root) {
    var result = 0;
    var sumTheTreeValues = root => {
       result += root.value
       if (root.left != null) {
          sumTheTreeValues(root.left);
        }
        if (root.right != null) {
           sumTheTreeValues(root.right);
        }
     };
     sumTheValues(root)
     return result;
 }

首先尝试
返回一个值,而不是记录它。。。
 function sum(root) {
    var result = 0;
    var sumTheTreeValues = root => {
       result += root.value
       if (root.left != null) {
          sumTheTreeValues(root.left);
        }
        if (root.right != null) {
           sumTheTreeValues(root.right);
        }
     };
     sumTheValues(root)
     return result;
 }