Clojure - Rekursion
Wir haben die recur-Anweisung in einem früheren Thema gesehen, und während die 'for'-Schleife einer Schleife ähnelt, recur ist eine echte Schleife in Clojure.
Wenn Sie einen Programmierhintergrund haben, haben Sie möglicherweise von einer Schwanzrekursion gehört, die ein Hauptmerkmal funktionaler Sprachen ist. Diese wiederkehrende Sonderform implementiert die Schwanzrekursion. Wie das Wort "Schwanzrekursion" anzeigt, muss die Wiederholung in der Schwanzposition aufgerufen werden. Mit anderen Worten, Wiederholung muss das letzte sein, was bewertet werden muss.
Das einfachste Beispiel für die recur-Anweisung wird in der 'for'-Schleife verwendet. Im folgenden Beispiel wird die Anweisung recur verwendet, um den Wert der Variablen 'i' zu ändern und den Wert der Variablen an den Schleifenausdruck zurückzugeben.
Beispiel
(ns clojure.examples.hello
(:gen-class))
;; This program displays Hello World
(defn Example []
(loop [i 0]
(when (< i 5)
(println i)
(recur (inc i)))))
(Example)
Ausgabe
Das obige Programm erzeugt die folgende Ausgabe.
0
1
2
3
4