我正在尝试编写一个函数,它对所有小于或的正整数求和
等于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/

10-14 04:29