`tailrec` asks the compiler to optimize tail recursion into a loop (no growing call stack). It works only for direct self-recursion where the recursive call is the last operation (tail position). If the function is not truly tail-recursive, the compiler will not apply the optimization.