2017-02-09 66 views
0

當您無法決定是使用遞歸方法還是標準迭代方法時,遇到編碼問題時是否有遵循的黃金法則。或者,當這兩個選項在內存方面看起來似乎合理或同等效率時,代碼量...... est?遞歸方法與標準迭代方法

+3

遞歸對於解決某些類型的問題很有用,但它有缺點(代碼複雜性,性能,堆棧溢出等)。如果沒有必要,我會避免它。 – shmosel

+0

如上所述,值得一提的是,遞歸方法具有堆棧開銷,並且如果調用堆棧太大,將導致堆棧溢出錯誤。如果這不是問題,我會選擇其中一個看起來不那麼重要的工程挑戰。有些問題最好用遞歸來完成,比如8皇后問題,儘管完全有可能做一個迭代解決方案 - 這只是一個頭痛的問題。遞歸開銷是調用堆棧幀,迭代開銷通常較小,所以遞歸問題中的開銷量取決於問題。我的建議是做一些看似自然的事情。 – dddJewelsbbb

回答

1

Java不是一種函數式編程語言,它不提供在函數式編程語言中很常見的工具,例如尾遞歸。所以我會說對於Java來說,更喜歡一般的迭代,但是如果迭代解決方案需要你(比如說)手動維護一個堆棧或類似的東西,那麼就使用遞歸。