首先,这是作业,但我只是在寻找有关如何执行此操作的提示或伪代码。
我需要使用 递归 对列表中的所有项目求和。但是,如果遇到列表中不是数字的内容,则需要返回空集。这是我的尝试:
(DEFINE sum-list
(LAMBDA (lst)
(IF (OR (NULL? lst) (NOT (NUMBER? (CAR lst))))
'()
(+
(CAR lst)
(sum-list (CDR lst))
)
)
)
)
这失败了,因为它无法将空集添加到其他内容。通常,如果它不是数字,我只会返回 0 并继续处理列表。
最佳答案
我会这样做:
(define (mysum lst)
(let loop ((lst lst) (accum 0))
(cond
((empty? lst) accum)
((not (number? (car lst))) '())
(else (loop (cdr lst) (+ accum (car lst)))))))
关于recursion - 方案总和,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9151045/