递归模式:累积

另一种递归模式称为累积模式。在累积递归模式中,对列表的每个元素执行一个操作,并将该操作的结果与对其他元素执行的操作的结果累积在一起。

这与使用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 制作文件列表, 以获取累积模式的示例。