我正在尝试编写一个函数,它对所有小于或的正整数求和
等于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)
)
)
它给了我以下错误:
递归调用错误处理程序(:如果“”则为无效的-FUNCTION NIL
“~S作为函数无效。”
(EQ(调制电流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
关于recursion - Lisp中的无效函数mod递归地添加了某些数字的倍数的和正整数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20537039/