Clojure-再帰

以前のトピックでrecurステートメントを見てきましたが、「for」ループはループのようなものですが、 recur Clojureの実際のループです。

プログラミングのバックグラウンドがある場合は、関数型言語の主要な機能である末尾再帰について聞いたことがあるかもしれません。この再帰特殊形式は、末尾再帰を実装する形式です。「末尾再帰」という言葉が示すように、再帰は末尾位置で呼び出す必要があります。言い換えれば、再発は評価される最後のものでなければなりません。

recurステートメントの最も単純な例は、「for」ループ内で使用されます。次の例では、recurステートメントを使用して、変数 'i'の値を変更し、変数の値をループ式にフィードバックします。

(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)

出力

上記のプログラムは、次の出力を生成します。

0
1
2
3
4