Non-tail recursion is a type of recursive function where the recursive call is not the last operation in the function. This means that after the recursive call returns, additional computation or operations are performed before returning a final result. In contrast to tail recursion, where the recursive call is the final action, non-tail recursion can lead to increased memory usage due to the need for maintaining multiple stack frames.