【发布时间】:2014-02-07 03:44:23
【问题描述】:
所以我正在尝试编写一个函数来计算方案中二叉树的根。根由以下标准计算:根处的值是其两个子项的最大值,其中每个值是其两个子项的最小值,依此类推。在最大化子项和最小化子项之间交替。
所以(TREEMAX '((3 (2 5)) (7 (2 1))) 将返回 3,因为 5 是 2 和 5 的最大值。3 是 3 和 5 的最小值。2 是 2 和 1 的最大值。2 是 7 和 2 的最小值。最后获取根 3 是 3 和 2 的最大值。我目前的代码如下:
(define TREEMAX
(lambda (a)
(cond ((list? (car a)) TREEMIN (car a))
((list? (cdr a)) TREEMIN (cdr a))
((> (car a) (cdr a)) (car a))
(#t (cdr b)))))
(define TREEMIN
(lambda (a)
(cond ((list? (car a)) TREEMAX (car a))
((list? (cdr a)) TREEMAX (cdr a))
((< (car a) (cdr a)) (car a))
(#t (cdr b)))))
但我的代码没有返回正确的数字。我哪里出错了?
【问题讨论】:
-
您是否尝试过自己使用笔和纸手动运行它?这是了解正在发生的事情的好方法。