From: Erik Veenstra Date: 2006-07-13T17:57:29+09:00 Subject: Re: Recursion and Ruby You could use "case" as well (see version 2). It's faster. Using an ordinary if..else (without the elsif part) is faster (see version 3). And version 4 is once again faster. 4 is faster than 3 is faster than 2 is faster than 1... gegroet, Erik V. - http://www.erikveen.dds.nl/ ---------------------------------------------------------------- Version 1 100,0% Version 2 90,3% Version 3 72,7% Version 4 70,2% ---------------------------------------------------------------- # VERSION 1 def fib(n) if n == 0 return 0 elsif n == 1 return 1 else return fib(n-1) + fib(n-2) end end 0.upto(30){|i| puts "The #{i} Fibonacci number is #{fib(i)}"} # VERSION 2 def fib(n) case n when 0 1 when 1 1 else fib(n-1) + fib(n-2) end end 0.upto(30){|i| puts "The #{i} Fibonacci number is #{fib(i)}"} # VERSION 3 def fib(n) if n<=1 1 else fib(n-1) + fib(n-2) end end 0.upto(30){|i| puts "The #{i} Fibonacci number is #{fib(i)}"} # VERSION 4 def fib(n) n<=1 ? 1 : fib(n-1) + fib(n-2) end 0.upto(30){|i| puts "The #{i} Fibonacci number is #{fib(i)}"} ----------------------------------------------------------------