【发布时间】:2012-10-06 02:23:49
【问题描述】:
我一直在研究这个,我可以在列表的末尾添加“一些东西”,但我遇到的问题是将列表的第一个元素添加到同一个列表的末尾.
例如:
{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) 但因为它是递归的,所以这个列表的第一个元素是空的。由于方案是动态类型的,所以我不能将第一个元素存储在任何地方(至少我认为我不能)。
我怎样才能让它工作,只使用基本的列表功能? (例如,cons、cons?、empty? first、last、rest)
【问题讨论】:
标签: list recursion scheme append