Clojure-recursion

提供:Dev Guides
移動先:案内検索

Clojure-再帰

前のトピックで再帰ステートメントを見てきましたが、「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