返回 drracket 中列表的最后一个元素

Returning last element of a list in drracket

我的计算机科学作业需要帮助。我一直在尝试 return 列表的最后一个元素,但我总是失败。这是我目前所拥有的:

(check-expect (last empty) "Error! The list is empty!")
(check-expect (last (list "apple" "banana" "pear" "orange")) "orange")

(define (last loe)
  (cond
    [(empty? loe) "Error! The list is empty!"]
    []))

我不知道从这里去哪里。我知道我缺少一个基本案例,但我无法弄清楚。请帮助!

last过程已经包含在Racket中,您不需要实现它。但是,如果您必须从头开始编写它,那么知道 在哪里 停止是一件简单的事情 - 就在列表结束之前!像这样:

(define (last loe)
  (cond
    [(empty? loe) "Error! The list is empty!"] ; we don't allow empty lists
    [(empty? (rest loe)) (first loe)]          ; stop right before last
    [else (last (rest loe))]))                 ; advance recursion