close
在程式中寫遞迴是一件不簡單的事情,雖然寫出來的東西不一定比較好,甚至無法執行(因為StackOver),不過某些狀況下,遞迴是無法避免的,
例如在讀取磁諜資料時,怎麼能確保每一個資料夾下是否還有其他資料夾?
通常遞迴在處理這種父子狀況時,還是比較好用的,至少在目前為止;不過遞迴對沒有寫過這一類的程式設計的人來說,通常會搞不懂怎麼著手,
下方是我在寫遞迴時,考慮的三個問題,提出來大家做參考:
- 進入點
遞迴是一段Method,需要有人呼叫,所以第一個要考慮的是誰要呼叫,在那裡呼叫。
至於呼叫時要傳遞的參數,不是要在這個時機點思考的。
- 執行功能
當遞迴這個Method被呼叫時,一定是為了執行特定的功能,所以要在這一個階段把所有的功能寫完。
一邊寫的時候,就會發覺什麼東西應該是由呼叫遞迴時帶入的;
通常代用第一次執行與第二次執行的考慮,就能把相關的功能寫完。
- 結束的條件
上述二個功能寫完後,接下來要考慮的是:結束遞迴的條件。
結束遞迴的條件,較常放的是二個地方,分別是Method的開頭或結尾,就跟Do...Whild之類的很相像。
考慮結束的條件後,並想像當程式執行到最深入的地方(例如父子階層的最後一層),能否靠著此條件結束遞迴。
這三個思考點,一直以來都是我在寫遞迴程式的思考方式,按照這個思路,把遞迴寫完後,再來就是利用Debug模式,
來確認剛剛程式的執行是否正常。
就這樣子,一步一步的寫好程式。
文章標籤
全站熱搜