2010-12-18 26 views
3

我只想知道是否有任何網站在練習遞歸和OO設計時遇到問題(給定一些設計類/接口結構的實體)?任何網站/書籍/技巧來練習遞歸和OO設計?

我理解需要遞歸的問題的解決方案沒有任何困難,但我似乎無法將遞歸應用於新問題。是否有任何技巧來應用遞歸?我很抱歉,如果這個問題很愚蠢!

+5

要理解遞歸,您必須先了解遞歸。 – 2010-12-18 18:51:29

+0

GNU的意思是「GNU Not Unix」在Java中,大多數問題最好使用循環來解決,所以如果你找不到一個好例子就不要感到驚訝。在大多數功能/邏輯編程語言中,遞歸往往是一種自然的選擇。 – 2010-12-18 18:57:27

回答

3

您可能需要查看諸如Project EulerUSACO之類的內容。它們提供了許多從簡單到困難的問題,其中許多可以使用遞歸技術來解決。隨着您的進行,您將有機會看到其他人如何解決您嘗試的問題。這樣你不僅可以學習遞歸,還可以學習許多其他解決問題的技巧。

+0

感謝您的答覆。我會研究它。 – collegian 2010-12-18 18:58:19

+0

另外,有沒有哪些地方可以練習面向對象的設計相關問題? – collegian 2010-12-18 19:04:42

+0

由於其編程不像設計那麼多,因此OOD有點難以找到這樣的網站。除了使用諸如Head First OOD之類的好書以外,我不確定推薦什麼。它必須來自嘗試各種項目。 – 2010-12-18 19:07:42

0

你遇到了什麼問題?我會建議給你一個新的問題,你有另一個機會。如果你無法發揮它的作用,舉一個簡單的例子說明你有什麼和你想做什麼,有人可能會看到什麼部分讓你絆倒。

+0

我試圖在模擬棋子移動的電話板上生成獨特的7位數字。首先,我如何製作一個高效的面向對象設計來表示所有對象?之後,我沒有模擬棋子運動的線索。有這麼多的可能性! – collegian 2010-12-18 19:01:17

+0

也許首先嚐試一個更簡單的例子。 – jzd 2010-12-18 19:03:11

1

嘗試http://programmingpraxis.com

它得到了疑問/樣品示例遞歸

例如:寫一個遞歸程序,它從1打印號碼10,fibonnaic系列

+0

感謝您的回覆。我們將對此進行調查。 – collegian 2010-12-18 19:48:41

+0

@大學生,您的歡迎。 – Deepak 2010-12-18 19:50:51

1

根據我的經驗,遞歸用於更多的數學算法設計,但在更高層次的編程(而OOP通常是更高的層次),使用遞歸併不總是增加很多。此外,遞歸過程通常不容易適應,因此如果其中一個需求發生變化,可能會導致您重寫整個過程,而在更線性的編程中,您可以更容易地獲取某些內容或將其忽略 - 它們的中間步驟不會互相依賴。另外,在(某些?)面向對象的語言中,對於每個遞歸級別,都會創建一個對象的新實例,這會導致開銷。

這是一個很好的技術知道,但根據不同類型的問題,你可能不會在面向對象問題中遇到真正的生活中的使用。除了文件/目錄腳本,我基本上已經將大部分酷炫的遞歸解決方案重寫爲無聊的線性方案,以達到性能或可維護性的原因。