【发布时间】:2016-08-03 13:40:03
【问题描述】:
这个过程应该返回一个包含来自 3 个给定列表的替代值的列表。例如 (alt ('a b c)'(1 2 3)'(i j k)) 应该返回 '(a 1 i b 2 j c 3 k)。
到目前为止,这是我的逻辑。我将获取每个列表的第一个元素,并以 cdr 作为新参数再次递归调用该过程。
(define (alternate lst1 lst2 lst3)
(cons (car lst1)
(cons (car lst2)
(cons (car lst3)
(alternate (cdr lst1)(cdr lst2)(cdr lst3))))))
错误发生在
(cons (car lst1)
“mcar:违反合同
预期:mpair?
给定()"
(cons a d) 返回一个新分配的对,其第一个元素是 a,第二个元素是 d。但既然给定的列表是 3 个而不是 2 个,还有其他方法可以创建列表吗?
这会是另一种方法吗?
(define (alternate lst1 lst2 lst3)
(list (car lst1)(car lst2)(car lst3))
(alternate (cdr lst1)(cdr lst2)(cdr lst3)))
【问题讨论】: