【发布时间】:2011-03-10 23:59:10
【问题描述】:
我正在尝试使用递归删除列表中的重复项。这就是我所拥有的。它只删除第一个重复项,而不是全部。
我的想法是查看第一个成员,检查它是否是列表其余部分的成员,如果是,则再次调用该函数。如果没有,请创建一个包含第一个成员和再次调用该函数的结果的列表。我不明白为什么它不删除所有重复项。
(define (removeDupes L)
(cond ((null? L) ())
((list? (member (car L) (cdr L))) removeDupes (cdr L))
(#T (cons ((car L) (removeDupes (cdr L)))))))
这是我修改的,它有效!我理解缺点是什么。它需要两个参数,我只给了它一个。我仍然不知道为什么第三行不起作用....
(define (removeDupes L)
(cond ((null? L) ())
((list? (member (car L) (cdr L)))(removeDupes(cdr L)))
(#T (cons (car L) (removeDupes (cdr L))))))
【问题讨论】:
标签: scheme