我一直在研究这个,我可以在列表的末尾添加“一些东西”,但我遇到的问题是将列表的第一个元素添加到同一个列表的末尾。
例如:
{1, 2, 3, 4} 变为 {1, 2, 3, 4, 1}。
这是我遇到问题的代码:
(define (copy-first-to-end lst)
(cond [(empty? lst)
(cons (first lst) empty)]
[else (cons (first lst)
(copy-first-to-end (rest lst)))]))
这段代码的问题是,对于空的?条件,答案调用 (first lst) 但因为它是递归的,所以这个列表的第一个元素是空的。由于方案是动态类型的,我不能将第一个元素存储在任何地方(至少我认为我不能)。
我怎样才能让它工作,只使用基本的列表功能?(例如,缺点,缺点?,空?第一个,最后一个,休息)