【发布时间】:2014-02-19 01:35:21
【问题描述】:
我正在尝试使用 Scheme 创建一个 Merge2 函数,该函数采用 2 个有序列表并将它们组合成一个有序列表。例如(merge2 '(1 3 4) '(2 4 5)) 将产生(1 2 3 4 4 5)
这是我的尝试。我觉得这应该可行,我只需检查每个列表的每个car 的min,然后将此min 附加到merge2 的递归调用中。然后我的基本情况是当列表中的 1 个变为空时,它应该只返回要附加的另一个列表。
(define (merge2 a b)
(if (and (null? a) (null? b))
`())
(if (null? a) b)
(if (null? b) a)
(display a)
(display b)
(if (= (min (car a) (car b)) (car a))
(append (list (min (car a) (car b))) (merge2 (cdr a) b)))
(if (= (min (car a) (car b)) (car b))
(append (list (min (car a) (car b))) (merge2 a (cdr b)))))
这个输出:
(1 2 4)(2 3 4)(2 4)(2 3 4)(4)(2 3 4)(4)(3 4)(4)(4)()(4)
类型错误:无法调用未定义的方法“应用”[merge2、merge2、merge2、merge2、merge2、merge2、car、merge2、merge2、merge2、merge2、merge2、merge2、car、merge2、merge2、merge2、merge2、merge2、merge2 , 汽车]
【问题讨论】:
标签: scheme