2

我写了一个 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 () ())))
4

1 回答 1

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!

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

于 2013-04-24T21:41:22.603 回答