"Fibonacci — recursive and array-memoised. Classic-corpus program for the Smalltalk-on-SX runtime." Object subclass: #Fibonacci instanceVariableNames: 'memo'! !Fibonacci methodsFor: 'init'! init memo := Array new: 100. ^ self! ! !Fibonacci methodsFor: 'compute'! fib: n n < 2 ifTrue: [^ n]. ^ (self fib: n - 1) + (self fib: n - 2)! memoFib: n | cached | cached := memo at: n + 1. cached notNil ifTrue: [^ cached]. cached := n < 2 ifTrue: [n] ifFalse: [(self memoFib: n - 1) + (self memoFib: n - 2)]. memo at: n + 1 put: cached. ^ cached! !