Clojure does not perform tail call optimization on its own: when you have a tail recursive function and you want to have it optimized, you have to use the special form recur. Similarly, if you have two mutually recursive functions, you can optimize them only by using trampoline. The Scala compiler is able to perform TCO for a recursive function, but not for two mutually recursive functions. Whenev
