为什么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)); } }