Recursion 格式中的递归

Recursion 格式中的递归,recursion,scheme,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)。我哪里出错了?您的函数没有执行任何操作,而且您确实没有指定要测试的内容。如果你真的只想从这个特定的列表中得到b

我的目标是从这个列表中找到

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

您的函数没有执行任何操作,而且您确实没有指定要测试的内容。如果你真的只想从这个特定的列表中得到bdg,那么你所需要做的就是对每个字符进行测试,(等于?(carlst)'B),依此类推

如果函数只是打印列表中的每一个字符,那么您需要构造一种方法来实现这一点。例如,现在的递归基本情况是正确的,空列表应该返回空列表。否则,如果它不是空的,则返回列表的cdr,然后使用它


如果你仍然想不出答案,那就把它写在纸上,看看不同的测试能做些什么。你需要想出一个办法来找到其他角色

可能是另一个的复制品吗?这门特殊编程课程的几名学生似乎把他们的作业扔进了堆栈溢出。这个问题已经得到了回答。看看
else
分支,你认为你的递归就在那里吗?检查你代码中的括号,以及函数
cddr