我只想知道是否有任何網站在練習遞歸和OO設計時遇到問題(給定一些設計類/接口結構的實體)?任何網站/書籍/技巧來練習遞歸和OO設計?
我理解需要遞歸的問題的解決方案沒有任何困難,但我似乎無法將遞歸應用於新問題。是否有任何技巧來應用遞歸?我很抱歉,如果這個問題很愚蠢!
我只想知道是否有任何網站在練習遞歸和OO設計時遇到問題(給定一些設計類/接口結構的實體)?任何網站/書籍/技巧來練習遞歸和OO設計?
我理解需要遞歸的問題的解決方案沒有任何困難,但我似乎無法將遞歸應用於新問題。是否有任何技巧來應用遞歸?我很抱歉,如果這個問題很愚蠢!
您可能需要查看諸如Project Euler或USACO之類的內容。它們提供了許多從簡單到困難的問題,其中許多可以使用遞歸技術來解決。隨着您的進行,您將有機會看到其他人如何解決您嘗試的問題。這樣你不僅可以學習遞歸,還可以學習許多其他解決問題的技巧。
當然,實現binary tree及其業務
根據我的經驗,遞歸用於更多的數學算法設計,但在更高層次的編程(而OOP通常是更高的層次),使用遞歸併不總是增加很多。此外,遞歸過程通常不容易適應,因此如果其中一個需求發生變化,可能會導致您重寫整個過程,而在更線性的編程中,您可以更容易地獲取某些內容或將其忽略 - 它們的中間步驟不會互相依賴。另外,在(某些?)面向對象的語言中,對於每個遞歸級別,都會創建一個對象的新實例,這會導致開銷。
這是一個很好的技術知道,但根據不同類型的問題,你可能不會在面向對象問題中遇到真正的生活中的使用。除了文件/目錄腳本,我基本上已經將大部分酷炫的遞歸解決方案重寫爲無聊的線性方案,以達到性能或可維護性的原因。
要理解遞歸,您必須先了解遞歸。 – 2010-12-18 18:51:29
GNU的意思是「GNU Not Unix」在Java中,大多數問題最好使用循環來解決,所以如果你找不到一個好例子就不要感到驚訝。在大多數功能/邏輯編程語言中,遞歸往往是一種自然的選擇。 – 2010-12-18 18:57:27