So here is a little test with Ruby and the differences between tree and tail recursion and the most basic recursive methods (factorial). Notice the execution times.
def tailFactorial(n, result) if n == 1 return result else tailFactorial((n - 1), (result * n)) end end def factorial(n) if n == 1 return 1 else return n * factorial(n-1) end end puts "Here is a tail recursive approach to the factorial problem\n" puts tailFactorial(8, 1) puts "\n" puts "Here is a tree recursive approach to the factorial problem\n" puts factorial(8) puts "\nExecution times\n" puts "Tree recursion: \n" st = Time.now result = factorial(8) tt = Time.now - st puts "Tree recursive approach, 8! = " + result.to_s + ", and was done in " + tt.to_s + "\n" puts "Tail Recursion: \n" st = Time.now result = tailFactorial(8, 1) tt = Time.now - st puts "Tail recursive approach, 8! = " + result.to_s + ", and was done in " + tt.to_s + "\n"
The reason tail recursion has a faster execution time is because it doesn't have to pop anything off the stack to get the result. The result is just passed as a parameter into the method.
BTW, ruby tutorial section!!!

New Topic/Question
Reply



MultiQuote






|