比较普通lisp中的两个解决方案的效率或正确性或有效性

时间:2015-01-17 16:47:10

标签: common-lisp

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))

另外,firstcar之间可能有什么区别?

1 个答案:

答案 0 :(得分:2)

更好:

CL-USER 1 > (loop for i in '(4 2 5 8 1 6) minimize i)
1