Count the Nth Fibonacci number in an effective way with tail-recursion

I wasn't satisfied with the traditional recursive definition.
Of course it could be improved by remembering the results (dynamic
programming) but I prefer the way Python/Ruby books introduce the solution.
The only thing that needs to change is tail recursion instead of a loop.