另一种递归模式称为累积模式。在累积递归模式中,对列表的每个元素执行一个操作,并将该操作的结果与对其他元素执行的操作的结果累积在一起。
这与使用cons的每个模式非常相似,只是不使用cons,而是使用其他某个组合器。
该模式如下:
+或其他组合函数。
以下是一个示例:
(defun add-elements (numbers-list)
"将NUMBERS-LIST的元素相加。"
(if (not numbers-list)
0
(+ (car numbers-list) (add-elements (cdr numbers-list)))))
(add-elements '(1 2 3 4))
⇒ 10
See 制作文件列表, 以获取累积模式的示例。