判断序列是否对称

1 (defun mirror? (s)
2        (let ((len (length s)))
3          (if (evenp len)
4          (do ((start 0 (+ start 1))
5               (end (- len 1) (- end 1)))
6              ((or (> start end)
7              (not (equal (elt s start)
8                    (elt s end))))
9               (> start end))))))

相对于列表,这个函数对向量来说更有效率,频繁地对列表调用elt的代价是昂贵的,因为列表仅允许循环存取。而向量允许随机存取,从任何元素来存取每一个元素都是廉价的(cheap)。

posted @ 2012-12-15 10:37  flowjacky  阅读(230)  评论(0编辑  收藏  举报