【发布时间】:2011-11-06 13:52:54
【问题描述】:
我有一点代码:
(defun divisor (x)
(loop for i from 2 to x do
(if (= x i) (return x)
(if (not (mod x i))
(return (append i (divisor (/ x i))))))))
应该返回 x 的主要因子列表。但是,代码只返回 x。
defun 的评估没有错误。我试图跟踪 defun 中的每个函数,但没有一个被评估过。循环是一个宏,所以我无法追踪它,但是如果我清除循环内部并替换为
(format t "~d " i)
如我所料,它从 2 计数到 x。
我认为我做错了什么,但我想不通。
【问题讨论】:
标签: loops for-loop lisp common-lisp