📜  Clojure-递归

📅  最后修改于: 2020-11-05 03:59:58             🧑  作者: Mango


我们已经在较早的主题中看到过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