logo       

Re: Re: Beginners Digest, Vol 18, Issue 2: msg#00013

lang.smalltalk.squeak.beginners

Subject: Re: Re: Beginners Digest, Vol 18, Issue 2


On Oct 3, 2007, at 7:31 AM, Michael Davies wrote:

If you're
interested in the numbers rather than the technique, there's a couple
of alternative approaches to speed it up, iteration and matrix
manipulation.

Actually, in the case of the Fibonacci sequence, the best way to speed it up is to use the closed-form formula:

nthFibonacci
|phi1 phi2 term1 term2|
phi1 := (1 + 5 sqrt) / 2.
phi2 := (1 - 5 sqrt) / 2.
term1 := phi1 raisedTo: self.
term2 := phi2 raisedTo: self.
^((term1 - term2) / (5 sqrt)) rounded.

Sorry, I realize the OP requested a recursive solution, but I couldn't resist. :)


<Prev in Thread] Current Thread [Next in Thread>
Google Custom Search

News | FAQ | advertise