Lisp程序产生合同违规

时间:2013-04-24 21:36:04

标签: lisp scheme binary-search-tree

我写了一个lisp程序,它以BST的形式接受两个参数,一个目的地和一个地图。它在BST中搜索目的地号码,并在找到目的地时打印(找到:路径)。如果没有找到它,它应该打印(未找到:目的地),但由于某种原因我收到合同违规。它没有正确地通过我的cond,我一直在弄它三十分钟。任何人都可以提供帮助。

这是我的计划:

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

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

1 个答案:

答案 0 :(得分: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!

我在回答你上一个问题时提到的完全相同:总是第一个需要考虑的案例,无论你是在遍历列表还是树,都是:如果它是空的,会发生什么?