Memoization of Fibonacci using generic Int => Int helper
For generic memoization I pretty much always use scalaz Memo but when I compute sequences, I personally prefer using the standard Scala Stream. 

Stream naturally memoize every computed value. Your solution could be refactored as:

lazy val fib = {
  def f(a: Int, b: Int): Stream[Int] = a #:: f(b, a + b)
  f(0, 1)
}

scala&gt; fib.take(10) foreach println
0
1
1
2
3
5
8
13
21
34

scala&gt; fib(45)
res1: Int = 1134903170