scala/ScalaBook/chapter-03/fibonacci.scala

object Fibonacci {
  var F = Map(0 -> 0,
              1 -> 1,
              2 -> 1)
} 


class Fibonacci {
  def num(n : Int): Int = {
    if (! Fibonacci.F.contains(n) ) {
      var k = 3
      while ( Fibonacci.F.contains(k) ) {
        k += 1
      }
      while ( k <= n ) { 
        Fibonacci.F += (k -> (Fibonacci.F(k-1) + 
                              Fibonacci.F(k-2)));
        k += 1
      } 
    }
    return Fibonacci.F(n)
  }
}



var A = new Fibonacci
println("fib(12)="+A.num(12))
println("fib(6)="+A.num(6))
println("fib(4)="+A.num(4))