閱讀611 返回首頁    go 技術社區[雲棲]


尾遞歸的妙處

尾遞歸的妙處

當遞歸調用是整個函數體中最後執行的語句且它的返回值不屬於表達式的一部分時,這個遞歸調用就是尾遞歸。

很多編譯器會利用這種特點自動生成優化的代碼。

看看編譯器為什麼可以做到這點。因為遞歸調用是當前活躍期內最後一條待執行的語句,於是當這個調用返回時棧幀中並沒有其他事情可做,因此也就沒有保存棧幀的必要了。通過覆蓋當前的棧幀而不是在其之上重新添加一個,這樣所使用的棧空間就大大縮減了,這使得實際的運行效率會變得更高。因此,隻要有可能我們就需要將遞歸函數寫成尾遞歸的形式。

最後更新:2017-04-03 08:26:17

  上一篇:go ios開發環境搭建
  下一篇:go Linux下socket編程,附帶tcp例子