C 編譯器中的尾遞歸最佳化 尾遞歸最佳化透過以跳轉取代遞歸函數呼叫來提高程式效率。令人驚訝的是,儘管它有明顯的優點,但程式設計師經常質疑它是否在 C/C 編譯器中實現。 現代編譯器中的實作 與普遍看法相反,所有現代主流 C 編譯器都執行 tail呼叫最佳化,包含相互遞歸呼叫。 編譯器指令 要啟用尾遞歸最佳化,只需啟動編譯器最佳化以提高速度: MSVC: /O2或/Ox GCC、Clang、ICC: -O3 檢查最佳化狀態 要驗證編譯器是否已執行最佳化,請使用下列方法之一: 執行將執行以下操作的呼叫否則會導致堆疊溢位。 檢查程式集輸出。 注意事項與注意事項 析構函數可能會幹擾尾遞歸最佳化。 如果需要執行任何析構函數,則無法執行尾部呼叫通話後。