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)