I recently read in a book about tail recursion and how most good compilers do it. The problem is that it gave a very poor definition of what exactly tail recursion was. Depending on where I've read, its either the ability of recursion to simulate iteration, or the ability of a recursive function to perform on the second half of say a vector even though it wasn't told to! Now you can see why I'm confused! Can anyone help me grasp what this means possibly with a small example?