本质上,我正在尝试删除列表中的第一个和最后一个元素。我目前已经能够确定如何删除列表中的最后一个元素,但我正在努力如何删除列表中的第一个元素和列表中的最后一个元素。
这是我到目前为止的代码。有没有办法修改我的代码,以便我能够删除列表中的第一个元素。
(define (rid L)
(cond
[(empty? L) '()]
[(empty? (rest L)) '()]
[(cons (first L) (rid (rest L)))]))
这是我期望的代码结果
(check-expect (rid (list 1 2 3 4 5)) (list 2 3 4))
(check-expect (rid (list "cat" "dog" "giraffe")) (list "dog"))
最佳答案
只是为了好玩 - 在 Racket 中,您可以在不使用显式递归的情况下解决这个问题。始终尝试使用现有程序来解决您的问题:
(define (rid L)
(rest (drop-right L 1)))
(rid '(1 2 3 4 5 6))
=> '(2 3 4 5)
关于list - 如何使用递归删除 Racket 列表中的第一个和最后一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56845876/