0

我的目标是从此列表中找到

(A B C D E G)

新清单

(B D G)

但是我的代码不起作用。

(define  (fun lst)
    (cond
     ((null? lst) '())
      ((null? (cdr lst) '())
       (else  (cons ( cadr lst) ( fun lst))))

我得到(B C D E G)。我哪里出错了?

4

1 回答 1

2

您的函数没有做任何事情,并且您确实没有指定要测试的内容。如果您真的只想从该特定列表中获取 BDG,那么您需要做的就是为每个角色进行这些每个测试,(equal? (car lst) 'B) 等等。

相反,如果该函数假设只打印列表中的所有其他字符,那么您需要构建一种方法来做到这一点。例如,您现在拥有的递归基本情况是正确的,并且空列表应该返回一个空列表。否则,如果它不为空,则返回列表的 cdr,然后使用它。

如果您仍然无法找出答案,请开始将其写在纸上,看看不同的测试会做什么。您需要想出一种方法来找到其他所有角色。

于 2012-11-11T18:41:25.450 回答