比较 common lisp 中两种解决方案的效率或正确性或有效性
Compare the efficiency or correctness or validity two solutions in common lisp
在解决 here 中的以下问题时,我得到的答案与作为示例解决方案给出的答案不同。由于我是 Lisp 的新手,我不知道哪种方法更好。请分享您的想法。
问题:最小
写一个迭代函数 returns 列表中最小的数字:
(smallest '(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
有什么区别?
更好:
CL-USER 1 > (loop for i in '(4 2 5 8 1 6) minimize i)
1
在解决 here 中的以下问题时,我得到的答案与作为示例解决方案给出的答案不同。由于我是 Lisp 的新手,我不知道哪种方法更好。请分享您的想法。
问题:最小
写一个迭代函数 returns 列表中最小的数字:
(smallest '(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
有什么区别?
更好:
CL-USER 1 > (loop for i in '(4 2 5 8 1 6) minimize i)
1