2 # Return the self'th Fibonacci number
4 return self if self <= 1
6 f2
= 0 # the n-2th term
7 f1
= 1 # the n-1th term
10 f0
, f1
, f2
= f0
+ f1
, f0
, f1
15 @
@fibonacci_cache = {0 => 0, 1 => 1, 2 => 1}
17 unless @
@fibonacci_cache.has_key
?(self)
18 @
@fibonacci_cache[self] = ((self - 2).fibonacci
+ (self - 1).fibonacci
)
20 @
@fibonacci_cache[self]