我正在尝试编写一个函数,该函数将所有小于或的正整数求和等于200并且是6和7的倍数。
我有以下内容:
(defun sumFunction(current sum)
(if (/= current 200)
(if ((eq (mod current 6) 0) or (eq (mod current 7) 0))
(setf sum (+ sum current))
(sumFunction (+ current 1) sum)
)
(sumFunction ((+ current 1) sum)
)
)
它给了我以下错误:
递归调用的错误处理程序(:INVALID-FUNCTION NIL IF""~S作为函数无效。"(EQ(MOD CURRENT 3)0))
我不确定为什么会有错误。
如果我遵循逻辑,它应该会返回我需要的结果。
非常感谢您的帮助!感谢
您的代码中有两个语法错误,还有一些其他问题与Lisp风格不匹配。请参阅下面更正的代码。
(defun sumFunction(current sum)
(if (/= current 200)
(if (or (eq (mod current 6) 0) (eq (mod current 7) 0))
(sumFunction (+ current 1) (+ current sum))
(sumFunction (+ current 1) sum))
sum))
结果如下。
(sumFunction 20 0)
;=> 5731