2016-07-06 110 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中的所有元素,並且將爲每個元素調用遞歸函數。所以,這應該覆蓋樹中的所有元素。你能否進一步解釋你的問題? –