阶乘迭代非法参数-clojure (defn fac[n] (def结果1) (循环[i n c 1] (如果第一眼看到(
)阶乘迭代非法参数-clojure (defn fac[n] (def结果1) (循环[i n c 1] (如果第一眼看到(,clojure,Clojure,) 不要在defn内使用def REPL将打印计算函数的结果。请使用它 这样我们就可以 (defn fac [n] (def result 1) (loop [i n c 1] (if (<= c 5) result (recur (* c i) (inc c)) ) ) (println result) ) (fac 5) …
- 不要在
内使用defn
def
- REPL将打印计算函数的结果。请使用它
(defn fac [n]
(def result 1)
(loop [i n c 1]
(if (<= c 5)
result
(recur (* c i) (inc c))
)
)
(println result)
)
(fac 5)
…有效的方法是:
(defn fac [n]
(loop [i 1, c 1]
(if (> c n)
i
(recur (* c i) (inc c)))))
编辑以更正一次性错误并改进解释。您确定您在实际运行时将代码粘贴在这里吗?它对我有效。它打印
1
@NathanDavis我正在尝试查找120Ok,也许我误读了您的问题。但是java.lang.IllegalArgumentException:循环如何需要一个向量作为其绑定g
开始游戏?谢谢,但我无法打印循环外的I
(defn fac [n]
(loop [i 1, c 1]
(if (> c n)
i
(recur (* c i) (inc c)))))
(fac 5)
=> 120