我是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))
))))
Run Code Online (Sandbox Code Playgroud)
但是当我执行代码时,会显示此错误
CompilerException java.lang.UnsupportedOperationException: Can only recur from tail position, compiling
Run Code Online (Sandbox Code Playgroud)
发生了什么?recur是不是在功能的尾部?