配对2列出Scheme

时间:2016-11-10 23:10:25

标签: scheme r5rs

方案/球拍/ R5RS

尝试进行递归过程,将2个相同大小的列表配对。只是不能正确地进行递归调用。 这就是我所拥有的,而且我被困住了。

(define (pairs list1 list2)
  (if (or (null? list1) (null? list2))
      '()
        (cons (car list1) (car list2))
        ))

测试用例: (对'(1 2 3)'(a b c)) 期望的输出:((1.a)(2.2 b)(3. c)) 电流输出:(1.a)

2 个答案:

答案 0 :(得分:2)

你只需要cons当前结果到程序的递归调用,那就是它!

(define (pairs list1 list2)
  (if (or (null? list1) (null? list2))
      '()
      (cons (cons (car list1) (car list2))
            (pairs (cdr list1) (cdr list2)))))

答案 1 :(得分:0)

这也是一个可以接受的解决方案吗?

(define pairs
      (lambda (x y)
        (map cons x y)))