title: Clojure - using recur vs plain recursive function call
body: <p>Why does Clojure have the "recur" special form?</p>
  
  <p>When I replace the "recur" with the function itself I get the same result:</p>
  
  <pre><code>(defn print-down-from [x]
    (when (pos? x)
      (println x)
      (recur (dec x))
      )
    )
  (print-down-from 5)
  </code></pre>
  
  <p>Has the same result as</p>
  
  <pre><code>(defn print-down-from [x]
    (when (pos? x)
      (println x)
      (print-down-from (dec x))
      )
    )
  (print-down-from 5)
  </code></pre>
  
  <p>I was wondering if "recur" is just a safety measure so that the compiler will throw an error if a developer happens to use a non-tail recursion. Or maybe it's necessary for the compiler to optimize the tail recursion?</p>
  
  <p>But what I'm wondering most is about any other reasons other than stack consumption.</p>