小编Fer*_*osg的帖子

"只能从尾部位置重复,编译"错误,同时使用循环中的重复

我是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是不是在功能的尾部?

functional-programming clojure clojure-repl

1
推荐指数
1
解决办法
837
查看次数