在处理 Clojure Koans 时,我不得不迭代地计算一个数字的阶乘,我确实找到了解决方案,但我对 2 个解决方案之间的区别有疑问,一个有效,一个无效,虽然我没有不明白为什么:
一个有效的:
(defn factorial [n]
(loop [n n
acc 1]
(if (zero? n)
acc
(recur (dec n) (* n acc )))
)
没有的那个:
(defn factorial [n]
(loop [n n
acc 1]
(if (zero? n)
1
(recur (dec n) (* n acc )))
)
请注意,唯一的区别是如果满足条件,则 If 块的返回值。