600000007

プログラムと折り紙のブログです。

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)
  }


んー・・・。
きっともっと簡潔な書き方があるんでしょうね。