【问题标题】:How to do a while loop in LISP如何在 LISP 中执行 while 循环
【发布时间】:2016-03-02 05:42:29
【问题描述】:
我无法在 lisp 中使用简单的 while 循环!
(loop (while (row >= 0))
setf(row (- row 1))
(collect (findIndex row col))
当 row 大于或等于 0 时,我想减少 row 并收集 findIndex 方法给出的结果。
假设给出了 col。
谢谢!!!
【问题讨论】:
标签:
loops
while-loop
lisp
common-lisp
【解决方案1】:
循环的正确形式如下:
(loop while (>= row 0)
do (setf row (- row 1)) ; or better: do (decf row)
collect (findIndex row col))
有关循环语法的详细说明,请参阅manual。
【解决方案2】:
如果倒计时,则不需要WHILE+递减。
您的循环从row - 1 向下到-1。我们可以把它写成FOR 循环。举两个例子:
(loop for row-number from (1- row) downto -1
collect (find-index row-number col)))
如果你想从row倒数到0(这里使用downfrom ... to而不是from ... downto):
(loop for row-number downfrom row to 0
collect (find-index row-number col)))