2013-04-26 33 views
-2

什麼(如果有的話)優點/缺點,遞歸有沒有迭代?這個比那個好嗎?如果是這樣,爲什麼?比另一個更糟糕嗎?我期待着得到一個普通的贊成與反對概念的兩個。顯然,有些時候你會(或可能)只使用遞歸;這個問題是沿的線條更「如果你能請使用遞歸或迭代,你會使用和爲什麼它......」遞歸比。迭代 - Pros&Con的

+1

也許這些問題和答案可以幫助http://stackoverflow.com/q/13869894/1741542,http://stackoverflow.com/q/478570/1741542或http://stackoverflow.com/q/72209/1741542 – 2013-04-26 21:44:18

+0

@ AndyThomas-Cramer,我不知道它是否更快,我想知道有什麼好處/缺點。如果速度是一個,那很好。還有更多,還是速度是我們需要考慮的唯一事情? – BlackHatSamurai 2013-04-26 21:46:53

回答

0

不是話題的專家,但這裏是我的0.5 $

  • 經常數學。功能通過遞歸定義的,所以實現通過遞歸的確切定義產生一個程序,它是正確的「通過確定指標」

  • 的遞歸定義函數

    特性(或在一定程度上的方法)可以通過感應證明

  • 個人而言,我發現調試典型的「過程式」代碼要困難得多,因爲所有變量的演變都必須牢記在心,所以有很多記錄在繼續。

  • 通常看起來編譯器從循環中產生比遞歸定義更高效的機器代碼..然而,許多遞歸程序可以被編譯器優化爲「循環」(例如,尾部調用優化)。

總結一下,我認爲遞歸是語言比循環更「高級」的特徵。這意味着爲了生成高性能代碼,編譯器方面還有很多工作要做,但在「人」方面推理遞歸程序更方便。