我必须在Lisp中编写一个程序,如果它包含偶数个元素,则返回列表的第一项,如果它包含奇数个元素,则返回最后一个。我需要一些建议从哪里开始?我不需要整个计划。
答案 0 :(得分:0)
您可以使用length
获取列表的长度。
(length '(a b c)) ;; 3
然后,您可以针对谓词函数evenp
检查该数字,该函数返回T
或NIL
,具体取决于参数是否为偶数。
(evenp 1) ;; NIL
(evenp 2) ;; T
函数first
返回列表的第一个元素。
(first '(a b c)) ;; A
函数last
返回列表的最后一个缺点,因此您必须使用FIRST
打开该值。
(last '(a b c)) ;; (C)
(first (last '(a b c))) ;; C
然后你可以把它们组合成一个像这样的函数:
(defun get-first-if-even-length (list)
(if (evenp (length list))
(first list)
(first (last list))))
此函数返回列表中的第一个或最后一个元素,具体取决于其长度是否为偶数。