我正在尝试项目 euler 问题来学习常见的 lisp,但我很早就被困住了。关于问题 1,问题是从 1 到 1000 的整数之和。我认为下面的代码应该这样做,但它总是返回值end
(如果是 mod 3 或 mod 5)或 0。
(defun mod3or5 (n)
(cond
((equal (mod n 5) 0) n)
((equal (mod n 3) 0) n)
(0))))
(defun mod-sum (start end)
(cond
((equal start end) (mod3or5 start))
(+ (mod3or5 start) (mod-sum (+ start 1) end))))
例如
(mod-sum 1 9)
=> 9
(mod-sum 1 8)
=> 0
我希望答案分别是 23 和 14。