Tail-call optimization (TCO) is a compiler optimization that allows for efficient use of procedure calls in the tail position. A procedure call is in tail position if it is the last thing to happen before returning. Without TCO, procedure calls use additional stack space, which can lead to stack overflows for deeply recursive functions. With TCO, the compiler can eliminate unused stack frames to avoid this problem. TCO allows problems to be solved efficiently using recursion by preventing stack overflows.