我正在尝试学习 Clojure,所以我想一个好的开始方法是使用它完成 Euler 项目的挑战,第一个挑战是将所有低于 1000 且可被 3 或 5 整除的数字相加。
我的原始代码是:
(defn div3 [input-no] (zero? (mod input-no 3)))
(defn div5 [input-no] (zero? (mod input-no 5)))
(reduce + (filter (or div3 div5) (range 1 1000)))
但这不起作用,结果过滤器只会返回可被 3 整除的数字列表,而不是可被 5 整除的数字列表。
我将代码更改为:
(defn div3or5 [input-no] (or (div3 input-no) (div5 input-no)))
(reduce + (filter div3or5 (range 1 1000)))
哪个得到了正确的结果,但我不知道为什么我的原始代码不起作用。
任何人都可以对此有所了解吗?