是否可以在Scala中保证尾递归优化?

Jus*_*s12 3 scala tail-recursion

假设我有以下代码

def foo(x:Int):Unit = {
   if (x == 1) println ("done")
   else foo(scala.util.Random.nextInt(10))
}
Run Code Online (Sandbox Code Playgroud)

是否保证编译器进行尾递归优化?

Nei*_*ssy 13

是.要确保将@tailrec注释添加到方法中.如果编译器不使用尾递归进行编译,这将导致编译器抛出错误.

@tailrec
def foo(x:Int):Unit = {
  if (x == 1) println ("done")
  else foo(scala.util.Random.nextInt(10))
}
Run Code Online (Sandbox Code Playgroud)