Clojure 库递归无循环 ... recur

标签 clojure loops

我有一个关于迭代和与迭代类似的 Clojure 库函数的问题。

(defn iterate
2     "Returns a lazy sequence of x, (f x), (f (f x)) etc. f must be free of side-effects"
3     {:added "1.0"
4      :static true}
5     [f x] (cons x (lazy-seq (iterate f (f x)))))

没有循环...... recur 是否迭代不消耗它的堆栈,因为它是在一个惰性序列上运行?

最佳答案

是的,每次在惰性序列中强制下一个元素时,都会调用一次迭代,因此没有(立即)递归,也没有堆栈消耗。

关于Clojure 库递归无循环 ... recur,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7917813/

相关文章:

python - 如何使用python追加多维数组?

clojure - Clojure 中的 pound-quote (hash-quote, #') 是否运行解析和符号函数?

clojure - "WARNING: JBIG2ImageReader not loaded."但 [org.apache.pdfbox/jbig2-imageio "3.0.1"] 存在吗?

clojure - 使用重新框架实现登录系统

Python:显然我无法理解 For Loop 的概念

r - 循环以包含不同的文件夹和模式

unit-testing - Clojure 中 with-test 的共享定义

clojure - 有位获取功能吗?

java - 有人可以帮我用java中的for循环格式化二维数组显示吗

Java 没有使用链表正确地为我的变量赋值