我有:
(defun getTotalValue(pack)
(cond ((null pack) 0)
(t (+ (car (car pack)))) (getTotalValue (cdr pack))
)
)
根据我的理解,将在列表中添加项目的所有第一个元素。测试函数调用将是:
(getTotalValue '((10 c u) (3 s u) (5 h d) (7 s d) (12 h u)))
但是,当我运行上面的代码时,它只打印出列表中第一个项目的第一个元素10
。为什么不会将所有项目的第一个元素加起来?
答案 0 :(得分:1)
你有括号问题 - (car (car pack))
之后两个错位的括号,所以cond
表达式在那里终止并且递归发生但结果被丢弃了。
(defun getTotalValue (pack)
(cond ((null pack) 0)
(t (+ (car (car pack)) (getTotalValue (cdr pack))))))