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