Loops 如何使用loop/recur打印clojure中n个数字的平方和

Loops 如何使用loop/recur打印clojure中n个数字的平方和,loops,clojure,tail-recursion,Loops,Clojure,Tail Recursion,我正在尝试以下代码,但它给出了一个错误: (defn sum-square [n] (loop [i 0 result 0] (if (<= i n) (do (recur (inc i) (conj result (+ result (* i i)))))))) (def n (Integer/parseInt (clojure.string/trim (read

我正在尝试以下代码,但它给出了一个错误:

(defn sum-square [n]
       (loop [i 0 result 0]
           (if (<= i n) 
               (do    
                   (recur (inc i) (conj result (+ result (* i i))))))))  
    (def n (Integer/parseInt (clojure.string/trim (read-line))))
    (sum-square n)

你也可以这样写。

conj result+result*i我用+result*i替换,我已经试过了。不要认为workdo是不必要的,如果是这样的话,就错过了else分支,谢谢。我没有考虑其他部分。它现在可以工作了。您在每次调用时都重新定义了一个全局n。使用let创建本地绑定。或者类似于:defn平方和[n]变换映射*%%+范围n
(defn sum-square [n]
  (->> (range n) 
       (map *) 
       (reduce +))