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 ブロックの戻り値であることに注意してください。