:no_mouth: clojure solution with *gasp* tail recursion