У меня есть следующий рекурсивная функция Grails:Рекурсивная функция в нерекурсивной функции?
private boolean isCyclic(TreeNode node) {
boolean cyclic = false
def myParents = this.parents
// if there are parents of this node
if (myParents.size() != 0) {
// if the new node is in the parents set of this node
if (myParents.contains(node)) {
cyclic = true
return cyclic
}
else {
// go into each parent of this node and test if new node is contained in their parents
myParents.each { parent ->
log.debug "go to parent: "+parent.name
if (cyclic) {
return cyclic
}
cyclic = parent.isCyclic(node)
}
}
}
return cyclic
}
Как я могу преобразовать эту функцию в нерекурсивна функцию?
Что это такое? Хотите узнать, содержится ли узел в родителях узла дерева? Не уверен, как это становится циклическим ... Разве это не рекурсивный метод 'contains'? –
@tim_yates Этот метод проверяет, приведет ли добавление узла TreeNode к циклу и отношениям родителя к дочернему. – confile
@tim_yates, что вы подразумеваете под рекурсивным содержимым? – confile