Scala 并沒有內置的尾遞歸優化,但可以通過使用 @tailrec
注解來實現尾遞歸優化。@tailrec
注解會讓編譯器檢查方法是否真正是尾遞歸,并在不是尾遞歸的情況下報錯。
以下是一個使用 @tailrec
注解實現尾遞歸優化的示例代碼:
import scala.annotation.tailrec
object TailRecursionExample {
def factorial(n: Int): Int = {
@tailrec
def factorialHelper(n: Int, acc: Int): Int = {
if (n <= 1) acc
else factorialHelper(n - 1, n * acc)
}
factorialHelper(n, 1)
}
def main(args: Array[String]): Unit = {
println(factorial(5)) // 輸出 120
}
}
在這個示例中,factorialHelper
方法是一個尾遞歸函數,它接受兩個參數 n
和 acc
,并在遞歸調用時傳入更新后的參數。使用 @tailrec
注解標記這個方法,確保編譯器進行尾遞歸優化。