Scala by Example -> 演習 4.6.1の解答案
Scala by Example -> 演習 4.6.1の解答を考えてみました。
末尾再帰にする→ else以降が再帰関数だけになればいい→でもfactorialだけにしちゃうと合計値を引き継げない→だったらfactorialに合計値を引き継げさせればいい
def factorical(x: Int) = { def iter(result: Int, x: Int): Int = { if (x == 1) result else iter(result * (x - 1), x - 1) } iter(x, x) }
んー・・・。
きっともっと簡潔な書き方があるんでしょうね。