close

在程式中寫遞迴是一件不簡單的事情,雖然寫出來的東西不一定比較好,甚至無法執行(因為StackOver),不過某些狀況下,遞迴是無法避免的,

例如在讀取磁諜資料時,怎麼能確保每一個資料夾下是否還有其他資料夾?

通常遞迴在處理這種父子狀況時,還是比較好用的,至少在目前為止;不過遞迴對沒有寫過這一類的程式設計的人來說,通常會搞不懂怎麼著手,

下方是我在寫遞迴時,考慮的三個問題,提出來大家做參考:

  1. 進入點

遞迴是一段Method,需要有人呼叫,所以第一個要考慮的是誰要呼叫,在那裡呼叫。

至於呼叫時要傳遞的參數,不是要在這個時機點思考的。

  1. 執行功能

當遞迴這個Method被呼叫時,一定是為了執行特定的功能,所以要在這一個階段把所有的功能寫完。

一邊寫的時候,就會發覺什麼東西應該是由呼叫遞迴時帶入的;

通常代用第一次執行與第二次執行的考慮,就能把相關的功能寫完。

  1. 結束的條件

上述二個功能寫完後,接下來要考慮的是:結束遞迴的條件。

結束遞迴的條件,較常放的是二個地方,分別是Method的開頭或結尾,就跟Do...Whild之類的很相像。

考慮結束的條件後,並想像當程式執行到最深入的地方(例如父子階層的最後一層),能否靠著此條件結束遞迴。

 

這三個思考點,一直以來都是我在寫遞迴程式的思考方式,按照這個思路,把遞迴寫完後,再來就是利用Debug模式,

來確認剛剛程式的執行是否正常。

就這樣子,一步一步的寫好程式。

arrow
arrow

    JAVA Programmer 發表在 痞客邦 留言(0) 人氣()