recursion - lisp 中的无效函数 mod 递归地添加作为某些数字的倍数的总和正整数

标签 recursion lisp division modulo

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

关于recursion - lisp 中的无效函数 mod 递归地添加作为某些数字的倍数的总和正整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20537039/

相关文章:

c# - 将项目添加到列表中的递归算法

emacs - Emacs 编辑器的添加/编辑功能

programming-languages - 您会选择什么除法运算符?

MySQL ORDER BY x-y/x ASC 排序

c++ - 为什么在似乎满足基本情况后继续调用此递归函数?

recursion - 有人可以向我解释这些 Haskell 函数吗?

recursion - 相互递归的类型推断

emacs - Emacs 中 Lisp 的 Scheme 方言

scheme - 使用 argmax 查找元素列表中的最大数

python - 求和与除法示例 (Python)