Tail recursion in clojure is pretty cool:
user=> (defn factorial [n]
  #_=>     (loop [n n acc 1]
  #_=>        (if (zero? n)
  #_=>             acc
  #_=>           (recur (dec n) (* acc n)))))
The loop construct above shadows the in loop n with the default value on
the defn's n. In scala, I'd use an embedded function and call it like
factorialTail(n 1).