如何限制函数的递归深度?
最佳答案
创建递归函数时,您始终可以传递所谓的累积参数。只需传递一个额外的数字参数,该参数在您每次输入新的递归级别时都会递增(即,每次递归迭代时都精确递增一次参数)并将其传递。
您可以将此技术用于多种用途,以及跟踪递归深度。只需在函数开始时检查参数的值,然后在该参数等于您要遍历的最大深度时返回即可。
例
此示例显示了一个名为depthLevel
的变量,该变量表示当前节点在树中的深度级别。 maxDepthLevel
常数应在某处定义。此深度优先算法的遍历深度不超过maxDepthLevel
。请注意,对于每个递归级别,depthLevel
如何增加1,使其成为累加参数。
function depthFirst(var node, var depthLevel) {
if(depthLevel > maxDepthLevel) {
return;
}
//do logic for this node here
var childrenOfThisNode = node.getChildren();
foreach(var child in childrenOfThisNode) {
depthFirst(child, depthLevel + 1)
}
}