如何在嵌套for循环中累积计数?

1 lisp common-lisp nested-loops

我有以下内容:

(let ((count 0))
  (loop for i from 1 to 3 do
        (loop for j from 1 to 3 do
              (loop for k from 1 to 3 do
                    (setq count (+ 1 count))))
        finally (return count)))
Run Code Online (Sandbox Code Playgroud)

这是最快,最低级的构造吗?

Ter*_* D. 7

最好的方法是什么,取决于代码的目的,即为什么要嵌套三个循环.

在您的具体情况下,最快和最短的答案是(* 3 3 3)或27

更一般地说,可能的改进是替换(setq count (+ 1 count))为(incf count)

你也可以把循环写成

(loop for i from 1 to 3 summing
   (loop for j from 1 to 3 summing
      (loop for k from 1 to 3 summing 1)))
Run Code Online (Sandbox Code Playgroud)

除了非循环答案之外,所有版本的速度应该大致相同.