Scalaでフィボナッチ数列のメモ
なんか面接とかでたまに書かされるらしいので
Listで再帰
// ListFib.f(100) object ListFib { def f(lim: Int): List[Int] = { 1 :: 2 :: f(1, 2, lim) } def f(a: Int, b: Int, lim: Int): List[Int] = if (b > lim) { Nil } else { b :: f(b, a + b, lim) } }
Streamで再帰
// StreamFib.f().take(10).toList object StreamFib { def f(a: Int = 1, b: Int = 1): Stream[Int] = b #:: f(b, a + b) }