首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Groovy递归函数在哪里存储结果?

Groovy递归函数在哪里存储结果?
EN

Stack Overflow用户
提问于 2013-01-15 07:03:59
回答 1查看 2.7K关注 0票数 2

我正在尝试构建一个简单的树状对象结构,并确定每个对象的深度级别。为此,我创建了一个递归函数,但此函数总是返回最后的结果,而不是预期的总结果。我可能把结果存储在了错误的地方。

代码语言:javascript
运行
复制
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
}

在我的测试用例中,我总是得到最新的运行,所以我猜results = []每次都会被重新初始化。如何存储递归函数的结果?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-15 07:07:15

您需要将递归调用的结果添加到结果中。而不是

代码语言:javascript
运行
复制
// recursive call
anObject.children?.each { child ->
   getStructure(child, level++)
}

试试这个:

代码语言:javascript
运行
复制
// recursive call
anObject.children?.each { child ->
   results.addAll(getStructure(child, level++))
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14328437

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档