概要 scala.annotation.tailrecアノテーションは、末尾再帰でないメソッドの場合にコンパイルエラーにするアノテーション。 再帰するメソッド(自分自身を呼び出すメソッド)は、呼び出す回数が多くなるとその分スタックフレームを消費してしまう(最悪はOutOfMemoryErrorが発生する)が、 末尾再帰だと効率の良いループに変換してくれる。 tailrecアノテーションを付けておくと、誤って末尾再帰になっていない時にコンパイルエラーになってくれる。 例 @tailrecの使用例。 import scala.annotation.tailrec メソッドが末尾再帰でないとコンパイルエラーになる。 (再帰呼び出し部分が呼び出した結果との演算になっていると、末尾再帰に出来ない) scala> @tailrec | def f(n: Int): Int = { | if (n <=