【发布时间】:2018-02-12 17:51:17
【问题描述】:
我正在使用球拍返回给定树的深度。这是当前代码:
(define (depth tree)
(cond
[(empty? tree) 0]
[else
(+ 1 (max (depth (cadr tree))
(depth (caddr tree))))]))
但我无法对其进行测试,因为我总是收到关于违反 car 和 cdr 合同的运行时错误。具体来说,当我尝试时
(depth '(1 2 3))
应该返回 1,我遇到:
length: contract violation
expected: list?
given: 2
无论我做什么,问题仍然存在,并且我不允许更改测试用例来解决问题。我敢肯定这很简单,但有人可以帮我理解吗?
(我看过其他帖子;有些帖子讨论了深度算法,但我特意询问的是此处介绍的汽车/cdr 合同违规问题。)
【问题讨论】:
标签: tree lisp racket depth contract