如何使用递归Javascript对这三个值求和
编写一个函数,返回所有节点(包括根节点)的总和 考虑到这一点,结果应该等于12如何使用递归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 如
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;
}