gpt4 book ai didi

JavaScript - 如何在递归期间重置局部变量?

转载 作者:行者123 更新时间:2023-11-29 20:53:59 25 4
gpt4 key购买 nike

有一个对象具有“值”或/和“ child ”作为属性。问题是将所有值相加并返回总和。这是工作。我用过递归。我正在使用全局变量来存储总和。

请引用- https://jsfiddle.net/ws6ty78b/1/

function sumup(node) {
sum+=node.value;
if (node.children && node.children.length > 0) {
for (var i =0; i < node.children.length; i++) {
sumup(node.children[i]);
}
}
return sum
}

问题 - 再次调用相同的函数时,我没有得到相同的结果。总和翻了一番。我知道为什么会这样,因为我使用的是全局变量。

问题 - 对于上述问题,有没有一种方法可以让我对任意数量的调用获得相同的结果。

请注意限制-

1) 不要更改函数签名和声明。

2) 在“sumup”函数中使用“sum”变量。

3) 不要使用任何额外的变量。

4) 仅在 sumup 函数内进行更改。

最佳答案

您可以简单地将每个子节点的值与当前节点的值相加:

function sumup(node) {
sum=node.value;
if (node.children && node.children.length > 0) {
for (var i =0; i < node.children.length; i++) {
sum+=sumup(node.children[i]);
}
}
return sum
}

关于JavaScript - 如何在递归期间重置局部变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50305436/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com