gpt4 book ai didi

Lisp - 不是预期的类型 NUMBER

转载 作者:太空宇宙 更新时间:2023-11-03 18:46:26 25 4
gpt4 key购买 nike

我在我的 Lisp 代码中收到以下错误:

value (PROBLEM1 (+ N 1)) is not of the expected type NUMBER.

代码的目的是将所有可被 3 或 5 整除的数字相加,最大为 1000。

(defun problem1 (n)
(if (< n 1000)
(if (or (= 0 (mod n 3)) (= 0 (mod n 5)))
(apply '+ '(n (problem1 (+ n 1))))
(apply '+ '(0 (problem1 (+ n 1)))))
0))

我意识到这个错误可能是因为问题 1 正在返回一个列表 - 但是当我在脑海中追踪这些值时,该函数应该可以正常工作。因此,如果我误用(或遗漏)了撇号,有人可以向我解释吗?

最佳答案

与其错过一个',不如说你错过了太多。当你写作时

(apply '+ '(n (problem1 (+ n 1))))

您正在尝试将 + 应用于包含符号 n 和未计算列表 (problem1 (+ n 1)) 的列表。这是因为您引用了参数列表,并且 ' 阻止了评估。你真正想要的是使用list,例如

(apply '+ (list n (problem1 (1+ n))))

关于Lisp - 不是预期的类型 NUMBER,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8811864/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com