2016-07-06 72 views
1

任何人都可以帮助我与递归逻辑?我有一个迭代器对象,我正在迭代使用while循环。然后在每个迭代的对象中,我需要再次迭代等等。从迭代器迭代器等递归逻辑

private void handleRecursiveMethod(someMethod) { 
        Iterator<Sometype> methods=doingSomething(someMethod)); 
        while(methods.hasNext()){ 
         printingDetailsAboutThisMethod(methods.next()) 
         // Again with each method I have to do same 
         // operation until methods.hasNext becomes false. 
         handleRecursiveMethod(methods.next()); 
         // By calling this, it does not complete while 
         // loop first time. 
        } 
} 
+0

在你做任何事情之前,你需要一个参数'someMethod'的类型。 –

+0

假设有一些类型。我想问一下递归逻辑。 – marion

+0

这不是递归逻辑。这是迭代逻辑。我很困惑你在问什么。 –

回答

1

你的函数进入while循环直到迭代器没有更多的条目迭代。所以我觉得当你在方法结束时调用handleRecursiveMethod(methods.next());时,它应该会抛出一个NoSuchElementException

从你的例子看来,你似乎是在尝试进行深度优先遍历。所以,你的代码应该看起来像

private void handleRecursiveMethod(Sometype someMethod) { 
    Iterator<Sometype> methods=doingSomething(someMethod)); 
    while(methods.hasNext()){ 
      Sometype method = methods.next() 
      printingDetailsAboutThisMethod(method) 
      handleRecursiveMethod(method); 
    } 
} 
+0

+1,尽管你的答案只是有点用处,尽管代码是正确的。如果有奇数个值被迭代,它只会抛出'NoSuchElementException'。当然,只有奇怪的元素被赋予'printingDetailsAboutThisMethod',并且在递归调用'handleRecursiveMethod'时只使用偶数元素,所以你的代码修复是正确的,但是描述有点偏离。 – Andreas

+0

这是非常有用的。但这就是我也在尝试。在这种情况下,如果在第一次迭代中条件为真,那么此逻辑将不会查找与其关联的其他迭代器对象。我认为如果一个对象有另一个对象再次遍历,而不是当一个对象有许多对象,然后遍历每个对象等等时,这个逻辑将起作用。 – marion

+0

你能解释一下其他与之相关的物体的含义吗?迭代器的作用是迭代集合中的所有对象。在这种情况下,在while循环中,将会遍历集合someMethod中的所有元素,并且将为每个元素调用递归函数。所以,这应该覆盖树中的所有元素。你能否进一步解释你的问题? –