私は十分に単純な2つの数を乗算するこの再帰関数を持っています。スカラテール再帰
今、私は末尾再帰関数にそれを回すためにしようとしている、と私はこれを試してみましたdef mul(n: Int, m: Int):Int =
if(m > 1) n + mul(n, dec(m))
else n
:
def mulWithTail(n: Int, m: Int):Int = {
@tailrec
def iter(result: Int, x: Int):Int =
if(x == 0) result
else result + iter(result, dec(x))
iter(n, m)
}
私は次のエラーを取得するしかし:
error: could not optimize @tailrec annotated method iter: it contains a recursive call not in tail position
else result + iter(result, dec(x))
質問:このエラーがなぜ発生しているのか説明できますか?私のコードをどのようにリファクタリングすべきですか?
デク()ただ1ところで – Phillip