我是 Clojure 的新手,为了练习,我正在尝试对半随机数应用一个简单的算法。
几天前,我在 clojure 的文档中读到了循环,以及它们是如何使用recur
的,所以我尝试用这行代码编写一个循环:
(def numbers_semi_random
(fn []
(loop[Xn 4 count 0]
(while (and (not (= Xn m)) (< count m))
(println (mod (+ (* 5.0 Xn) 7.0) m))
(recur (mod (+ (* 5.0 Xn) 7.0) m) (inc count))
))))
但是当我执行代码时,会显示此错误
CompilerException java.lang.UnsupportedOperationException: Can only recur from tail position, compiling
发生了什么?recur
是不是在函数的尾部?