scalac ( Scalaコンパイラ)が末尾再帰を最適化しないのはなぜですか?
これを示すコードとコンパイラの呼び出し:
> 猫 foo.scala
クラス Foo {
def ifak(n: Int, acc: Int):Int = {
もし (n == 1) acc
そうでなければ ifak(n-1, n*acc)
}
}
> scalac foo.scala
> jd-gui Foo.class
import scala.ScalaObject;
公開クラス Foo
ScalaObject を実装する
{
public int ifak(int n, int acc)
{
return ((n == 1) ? acc :
ifak(n - 1, n * acc));
}
}