为什么scalac(Scala编译器)不优化尾递归?
演示这一点的代码和编译器调用:
> 猫 foo.scala
类Foo {
def ifak(n: Int, acc: Int):Int = {
如果 (n == 1) 加起来
否则 ifak(n-1, n*acc)
}
}
> scalac foo.scala
> jd-gui Foo.class
导入scala.ScalaObject;
公共课 Foo
实现 ScalaObject
{
公共 int ifak(int n, int acc)
{
返回((n == 1)?acc:
ifak(n - 1, n * acc));
}
}