A function f(n)f(n)f(n) is tail-recursive if:
The recursive call is the last action performed by the function
The base case is f(0)f(0)f(0)
It uses memoization
It calls itself multiple times