我正在尝试构建一个简单的树状对象结构并确定每个对象的深度级别。为此,我创建了一个递归函数,但该函数始终返回最后的结果,而不是预期的总结果。我可能将结果存储在错误的位置。
def getStructure(anObject, level=0) {
def results = []
// [parent id, object id, level]
if(anObject.parent == null) {
results.add([0, anObject.id, level])
} else {
anObject.children?.each { child ->
results.add([anObject.parent.id, child.id, level])
}
// recursive call
anObject.children?.each { child ->
getStructure(child, level++)
}
results
}
在我的测试用例中,我总是获得最新的运行结果,所以我猜结果 = [] 每次都会重新初始化。如何存储递归函数的结果?
最佳答案
您需要将递归调用的结果添加到结果中。而不是
// recursive call
anObject.children?.each { child ->
getStructure(child, level++)
}
试试这个:
// recursive call
anObject.children?.each { child ->
results.addAll(getStructure(child, level++))
}
关于recursion - Groovy 递归函数在哪里存储结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14328437/