gpt4 book ai didi

list - 忽略列表中的非数字值并找到求和递归方法

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

我需要在 LISP 中创建一个递归方法,它获取列表中的数字并求和。列表中不是数字的任何内容都会被跳过(例如,如果列表包含“Cheese 12 Dog 8 Shoe 5”,则输出将为 25)。

现在我的代码找到了总和,但是如果列表中有任何不是数字的东西就会抛出错误。可以改变什么来解决这个问题?

(defun adder (lis)
(cond
((null lis) 0)
(t (eval (cons '+ lis)) )
)
)

最佳答案

这样做会:

(defun adder (lis)
(if (null lis)
0
(let ((c (car lis)))
(if (numberp c)
(+ c (adder (cdr lis)))
(adder (cdr lis))))))

您的版本不是递归的(您没有在加法器内部调用加法器),也许您的意思是这样的(非递归的)?

(defun adder (lis)
(apply '+ (remove-if-not 'numberp lis)))

关于list - 忽略列表中的非数字值并找到求和递归方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19936840/

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