【发布时间】:2013-11-12 18:15:34
【问题描述】:
我需要在 LISP 中创建一个递归方法,它获取列表中的数字并找到总和。列表中不是数字的任何内容都将被跳过(例如,如果列表包含“Cheese 12 Dog 8 Shoe 5”,则输出将为 25)。
现在我的代码找到了总和,但如果列表中有任何不是数字的内容,则会引发错误。有什么办法可以解决这个问题?
(defun adder (lis)
(cond
((null lis) 0)
(t (eval (cons '+ lis)) )
)
)
【问题讨论】:
-
numberp确定项目是否为数字...类似于...(cons '+ (map 'list #'(lambda (x) (if (numberp x) x 0)) lis))...