另一种递归模式称为累积
模式。在累积
递归模式中,对列表的每个元素执行一个操作,并将该操作的结果与对其他元素执行的操作的结果累积在一起。
这与使用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 制作文件列表, 以获取累积模式的示例。