计划中的递归

时间:2012-11-11 05:47:10

标签: recursion scheme

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

(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)。我哪里出错?

1 个答案:

答案 0 :(得分:2)

您的功能没有做任何事情,您实际上没有指定要测试的内容。如果你真的只想从那个特定列表中获得B D G,那么你需要做的就是为每个角色进行每次测试(等于?(car lst)'B)等等。

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

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