我有一个错误,我不明白为什么...... "给予ULTIMO" 此函数的目的是返回列表的最后一个元素
(defun ultimo (lst)
(cond ((= 1 (length lst))
(first lst)))
(t
(ultimo (rest lst))))
答案 0 :(得分:4)
括号有问题。应该以这种方式定义函数:
(defun ultimo (lst)
(cond ((= 1 (length lst)) (first lst))
(t (ultimo (rest lst)))))
请注意,通过使用可以正确格式化lisp语法的编辑器,很少会发生此类错误。
但是,您的函数无法正确管理空列表情况(它进入无限循环)。正确的版本可能是:
(defun ultimo (lst)
(cond ((null list) nil)
((null (rest list)) (first lst))
(t (ultimo (rest lst))))
作为旁注,请注意不建议在这样的上下文中使用length
函数,因为它是通过访问整个列表来执行的,