Clojure - 递归
我们在前面的主题中已经看到了 recur 语句,虽然"for"循环有点像循环,但 recur 是 Clojure 中真正的循环。
如果你有编程背景,你可能听说过尾递归,这是函数式语言的一大特性。 这种递归特殊形式是实现尾递归的形式。 正如"尾递归"一词所示,recur 必须在尾部位置调用。 换句话说,recur 必须是最后评估的。
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