【问题标题】:Recursion in scheme方案中的递归
【发布时间】:2012-11-11 05:47:10
【问题描述】:

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

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

【问题讨论】:

  • 另一个?似乎这个特定编程课程的几个学生已经将他们的作业倾倒在 Stack Overflow 上。这个问题已经回答了,here
  • 看看那个else 分支,你认为你的递归是正确的吗?
  • 查看代码中的括号和函数cddr

标签: recursion scheme


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-19
    • 1970-01-01
    • 1970-01-01
    • 2011-07-01
    • 2011-10-19
    • 1970-01-01
    • 2013-09-22
    • 1970-01-01
    相关资源
    最近更新 更多