【问题标题】:Lisp Program producing contract violationLisp 程序产生合同违约
【发布时间】:2013-04-24 21:36:04
【问题描述】:

我编写了一个 lisp 程序,它采用 BST 形式的两个参数、一个目标和一个映射。它在 BST 中搜索目标号码,如果找到目标,则打印 (found: path)。如果未找到,则应打印(未找到:目的地),但由于某种原因,我违反了合同。它没有正确地通过我的条件,我已经搞砸了三十分钟。谁能帮忙。

这是我的程序:

(define (robot goal map)
  [code hidden for university honour code purposes]

; Test robot function
(robot 64 '(53 () (64 () ())))
(robot 4 '(53 () (64 () ())))

【问题讨论】:

    标签: lisp scheme binary-search-tree


    【解决方案1】:

    您在过程 (define (robot map path) ...) 中遗漏了一个案例。如果map 参数是null 会发生什么?像这样修复它:

    (define (robot map path)
      (cond ((not (null? map))
             [code hidden for university honour code purposes])
            (else '()))) ; this line was missing!
    

    这与我在回答您上一个问题时提到的完全相同:无论您是遍历列表还是树,始终要考虑的第一个情况是:如果它为空会发生什么?

    【讨论】:

    • 我发誓我有那个。我一定是不小心删除了它。我盯着这个程序看了将近一个小时,试图找出问题所在。谢谢!
    • 有没有办法在没有句点的情况下显示“未找到:4”?而且我不能使用列表功能。
    • 当然:(cons "not found:" (cons goal '())) (list "not found:" goal)一样
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-15
    相关资源
    最近更新 更多