我在嘗試項目euler問題以學習常見的lisp,並且我很早就卡住了。在問題1中,問題是從1到1000的整數總和。我認爲下面的代碼應該這樣做,但它總是返回值end
(如果它是mod 3或mod 5)或0代替。返回錯誤值的Common Lisp函數
(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分別。
而在mod3or5中0意外返回(如果沒有值子句,則返回測試值並且0非零,所以爲真)。 – Vatine