2009-11-04 121 views
1

所以,我正在閱讀關於鏈表和遞歸。我只是想知道爲什麼我不能在靜態無效的方法中使用遞歸?另外,我想知道Java在鏈表中的遞歸,爲什麼你可以在打印或搜索節點時使用static void。謝謝。鏈接列表遞歸

+0

哪種特定的編程語言? – Derek 2009-11-04 23:16:47

+0

它看起來像它的Java或C#問題,給定了上下文和返回值。 (根據上下文,C++是不太可能的) – monksy 2009-11-04 23:19:13

+0

是的!你的Java是正確的。 – Cruiser 2009-11-04 23:21:39

回答

1

使用遞歸時可以使用靜態方法。你只需要傳遞在函數內部工作所需的所有信息。隨着鏈表列表的遞歸被強烈鼓勵,因爲它們是如何設計的(每個節點都包含對下一個節點的引用以及(有時)其前一個節點的引用)。

+0

根據JIT編譯器執行尾遞歸優化的能力,遞歸處理長鏈表可能導致堆棧溢出。 – 2009-11-05 01:31:23

4

您可以在靜態void的函數中使用遞歸。它只能通過副作用來回報它的價值或做它應該做的事情,這通常被認爲是有害的。但是對於印刷來說,這非常合理。

static void printList(node) 
{ 
    if (node != null) 
    { 
     print(node); 
     printList(node.next); 
    } 
}