【发布时间】:2012-05-28 14:55:35
【问题描述】:
在处理 Clojure Koans 时,我不得不反复计算一个数字的阶乘,我确实找到了解决方案,但我对两种解决方案之间的区别有疑问,一种有效,另一种无效,尽管我不明白为什么:
有效的:
(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 块的返回值。
【问题讨论】: