Recursion

Cadena invertida
Cadena invertida en Clojure
(defn reverse-string [s]
  (loop [s s acc ""]
    (if (empty? s)
      acc
      (recur
        (rest s)
        (str (first s) acc)))))

Performance considerations

It is not necessarily bad to use recursion as shown in the example above. In fact, many other approaches use recursion behind the scenes as, for instance, clojure.string/join is implemented using recursion. However, we should remember that strings are immutable, so code like the above will be inefficient. Instead, we should consider using the StringBuilder in the recursive function. For example, like so:

(defn reverse-string [s]
  (loop [s (into () s) sb (StringBuilder. "")]
    (if (empty? s)
      (.toString sb)
      (recur
        (rest s)
        (-> sb (.append (first s)))))))
miércoles, 23 de septiembre de 2026 · ¿Te resulta útil?