递归模式:accumulate(累积)

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

该模式与使用 consevery 模式非常相似,区别在于不使用 cons,而是使用其他组合方式。

模式如下:

示例如下:

(defun add-elements (numbers-list)
  "Add the elements of NUMBERS-LIST together."
  (if (not numbers-list)
      0
    (+ (car numbers-list) (add-elements (cdr numbers-list)))))

(add-elements '(1 2 3 4))
    ⇒ 10

See Making a List of Files,可查看累积模式的更多示例。