【发布时间】:2013-03-06 17:29:13
【问题描述】:
(defun sum-n-numbers(n)(if(=n 1)
1
(+N(sum-n-numbers(-n 1)))))
编辑 2:(defun sum-n-numbers(n)
(if(=n 1)
1
(+N(sum-n-numbers(-n 1))
)
上面的代码运行,但是当我为输出键入 (SUM-N-NUMBERS 1 3 2) 时,它不起作用并且出现错误。
)
)
我知道这个简单的代码也可以由自动计算数字总和的 inbuild lisp 函数 (+ 1 3 2) 执行,但我有一个考试问题,要求使用 defun 函数计算 n 个数字的总和.
编辑 1:这是我得到的错误:
Error: Call ((LAMBDA (#:N) (DECLARE (SPECIAL:SOURCE #) (LAMBDA-NAME SUM-N-NUMBERS)) (BLOCK #:SUM-N-NUMBERS (IF # 1 #))) 1 3 2) has the wrong number of arguments.
1 (abort) Return to level 1.
2 Return to debug level 1.
3 Return to level 0.
4 Return to top loop level 0.
【问题讨论】:
-
你得到什么错误?
-
@JackManey 感谢您的回复,这是我得到的错误:` 错误:调用 ((LAMBDA (#:N) (DECLARE (SPECIAL:SOURCE #) (LAMBDA-NAME SUM- N-NUMBERS)) (BLOCK #:SUM-N-NUMBERS (IF # 1 #))) 1 3 2) 的参数数量错误。 1(中止)返回到级别1。2返回到调试级别1。3返回到级别0。4返回到顶层循环级别0。`
-
@JackManey 我已经编辑了我的问题,以便于阅读错误。
-
现在您需要以正确的方式格式化 Lisp 函数...
-
(1) 了解您可能认为其他语言中的操作或标点符号的字符可以构成 Lisp 中的有效符号 (2) 用空格分隔符号和 (3) 不要滥用以下事实您的 Lisp 阅读器似乎通过使用一致的大小写将字母字符转换为大写 (4) 进行一些阅读和实验 - 这是您的考试!
标签: lisp