【发布时间】:2018-02-13 06:50:19
【问题描述】:
var count = 0;
var NumbOfNodes = function(root){
if(root.left != null){
NumbOfNodes(root.left);
}
count++;
if(root.right != null){
NumbOfNodes(root.right);
}
return count;
}
所以我有这个函数来计算树中的节点数。它是一个递归函数。当我计数一个全局变量时,该函数工作并返回一个正确的值。问题是,我希望 count 成为函数的一部分。但是如果我在函数中声明 count ,它会不断被重置,我不会从函数中得到正确的答案。
那么,有没有办法在递归函数中保留变量的值。这个问题可以帮助我进行许多其他编码实践。
我想要的(图表):Tree --> NumbOfNodes() --> 给了我节点的数量。但我不想只为它创建一个全局变量。
谢谢!
【问题讨论】:
-
您可以在函数中添加一个额外的 int 参数,始终传入 0 以启动。然后像往常一样在函数中递增以计算节点并返回它。
标签: javascript recursion