【发布时间】:2018-03-10 05:32:50
【问题描述】:
我应该创建一个函数,它接受两个列表作为参数,并通过组合输入列表返回一个对列表,其中对是给定索引处元素的组合。
输入示例:
(zipper '(1 2 3) '(4 9 5 7))
示例输出:
'((1 4) (2 9) (3 5))
如果一个输入列表比另一个长,则忽略较长列表中的额外元素。实现必须是递归的。
我创建的代码:
(define (zipper list1 list2)
(if (or (empty? list1) (empty? list2))
'()
(list (list (zipper (rest list1) (rest list2)) ))))
输出:
'((((((((()))))))))
'((((((()))))))
'()
有人可以帮忙吗?我也尝试过使用“缺点”将元素放在一起,所以不确定元素是如何丢失的。我是 Racket 的新手。谢谢。
【问题讨论】:
-
测试用例中的这个 a b c 来自哪里?提供更多的测试用例。我确信我可以做到,但不能使用给定的信息(什么是单对列表?这不是您的输出说明的内容。您的意思是一对列表?)
-
你是绝对正确的。我将错误的测试用例复制到我的帖子中。已编辑。
标签: recursion functional-programming scheme racket