lisp中用于递归添加某些数字倍数的和正整数的函数mod无效



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

最新更新