我在 Scala 中写了一个这样的函数:
def isSorted[T](list : List[T])(compare : (T, T) => Boolean) : Boolean = {
list match {
case Nil => true
case x :: Nil => true
case x :: rest => !compare(rest.head, x) && isSorted(rest)(compare)
}
}
我很好奇编译器是否会优化递归调用。递归调用只有在前导比较成功时才会发生。如果没有,有没有办法早点轰炸,仍然实现尾递归优化?