我写了一个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 () ())))
答案 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!
我在回答你上一个问题时提到的完全相同:总是第一个需要考虑的案例,无论你是在遍历列表还是树,都是:如果它是空的,会发生什么?