Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Recursion Groovy递归函数在哪里存储结果?_Recursion_Groovy_Tree - Fatal编程技术网

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

Recursion Groovy递归函数在哪里存储结果?,recursion,groovy,tree,Recursion,Groovy,Tree,我试图构建一个简单的树状对象结构,并确定每个对象的深度级别。为此,我创建了一个递归函数,但该函数总是返回最后的结果,而不是预期的总结果。我可能将结果存储在错误的位置 def getStructure(anObject, level=0) { def results = [] // [parent id, object id, level] if(anObject.parent == null) { results.add([0, anObject.i

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

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++))
}