我有一个关于迭代和与迭代类似的 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/