Scala関数型デザイン&プログラミングでScalaと関数型プログラミングに慣れようとしている。最初の練習問題はn番目のフィボナッチ数を出力する関数を作るというもの。 はじめは以下のように書いた。 object Main { //@annotation.tailrec def fib(n: Int): Int = { n match { case m if m <= 0 => throw new IndexOutOfBoundsException("fibonacci index should be positive number") case 1 => 0 case 2 => 1 case _ => fib(n - 2) + fib(n - 1) } } def main(args: Array[String]): Unit = { println(fib(12)) } } 正常に動くこ