从here解决以下问题时,我得到了与样本解决方案不同的答案。由于我是Lisp的新手,我不知道哪种方法更好。请分享您的想法。
问题:最小
编写一个迭代函数,返回列表中最小的数字:
(最小'(4 2 5 8 1 6))
1
样品溶液:
(defun smallest (lst)
(let ((smallest (first lst)))
(dolist (ele (rest lst))
(if (< ele smallest)
(setf smallest ele)))
smallest))`
我的解决方案:
(defun smallest (lst)
(let ((sm (car lst)))
(loop for i in lst when (> sm i) do (setf sm i))
sm))
另外,first
和car
之间可能有什么区别?
答案 0 :(得分:2)
更好:
CL-USER 1 > (loop for i in '(4 2 5 8 1 6) minimize i)
1