Welcome to Dream.In.Code
Become an Expert!

Join 136,944 Programmers for FREE! Get instant access to thousands of experts, tutorials, code snippets, and more! There are 1,870 people online right now. Registration is fast and FREE... Join Now!




Tail Recursion vs. Tree Recursion

 
Reply to this topicStart new topic

Tail Recursion vs. Tree Recursion

spullen
9 Oct, 2007 - 09:00 PM
Post #1

D.I.C Regular
Group Icon

Joined: 22 Mar, 2007
Posts: 330



Thanked: 1 times
Dream Kudos: 50
My Contributions
I have been taking a course on programming paradigms and one thing that we have learned about is different types of recursion. I really never thought about a different way to write recursive functions until I saw tail recursion.
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.
CODE

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!!!
User is offlineProfile CardPM
+Quote Post

skyhawk133
RE: Tail Recursion Vs. Tree Recursion
9 Oct, 2007 - 09:01 PM
Post #2

Head DIC Head
Group Icon

Joined: 17 Mar, 2001
Posts: 14,964



Thanked: 48 times
Dream Kudos: 1650
Expert In: Web Development

My Contributions
QUOTE
BTW, ruby tutorial section!!!


You gonna write the first few tutorials for it? smile.gif If so, I'll make it right now.
User is offlineProfile CardPM
+Quote Post

Fast ReplyReply to this topicStart new topic
Time is now: 12/3/08 11:10PM

Live Help!

Tutorials

Programming

Web Development

Reference Sheets

Code Snippets

DIC Chatroom

Bye Bye Ads

Monthly Drawing

Thumb Drive

Top Contributors

Top 10 Kudos This Month