(defn fac [n]
(def result 1)
(loop [i n c 1]
(if (<= c 5)
result
(recur (* c i) (inc c))
)
)
(println result)
)
(fac 5)
错误:线程&#34; main&#34;中的异常java.lang.IllegalArgumentException:loop需要一个向量来绑定它。
我正在尝试编写一个评估数字阶乘的函数。我的错误在哪里?它给了我一个答案
答案 0 :(得分:1)
乍一看:
def
。这让我们
defn
...没有编译,因为(defn fac [n]
(loop [i n c 1]
(if (<= c 5)
result
(recur (* c i) (inc c)))))
是浮动的。
需要进行一些更正:
result
,而不是i
。result
开始i
,而不是1
。n
代替>
。我们最终
<=
......有效:
(defn fac [n]
(loop [i 1, c 1]
(if (> c n)
i
(recur (* c i) (inc c)))))
编辑以纠正一次性错误并改进说明。