gpt4 book ai didi

3 的倍数的 Lisp 总和

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

所以我是 LISP 的新手,我想知道如何找到可被 3 整除的数字之和。这是我到目前为止所做的:

(defun sumel (li)

(cond
((null li) 0)

( (zerop (rem (car li) 3)) (+ (car li) (sumel (cdr li))))

)

)

对我做错了什么的一点提示会很好。

最佳答案

您遇到了列表为空的情况,当您实际找到 3 的倍数时,但是如果它是另一个您应该跳过的数字会怎样?你已经做了默认术语,所以 Common Lisp 将返回 nil。例如,您的代码是这样工作的:

(defun sumel (li)
(cond
((null li) 0)
((zerop (rem (car li) 3))
(+ (car li) (sumel (cdr li))))
(t nil))) ; when not a multiple of 3 we are finished, return nil

尝试评估 (cond),您会发现它与 (cond (t nil)) 相同。

您只需添加 (sumel (cdr l)) 作为替代方案即可解决此问题。它的计算结果应该是列表其余部分的倍数之和,这就是您想要的。

关于3 的倍数的 Lisp 总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58570311/

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