私はプロジェクトオイラーの問題を試し、一般的なlispを学習しようとしていますが、かなり早い段階で立ち往生しています。問題1では、問題は1から1000までの整数の合計です。以下のコードでそれを実行する必要があると思いますが、代わりに常にend
(mod3またはmod5の場合)または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になると思います。