2016-11-10 4 views
1

SCHEME/Racket/R5RSPairing 2 목록 Scheme

동일한 크기의 목록 2 개를 쌍으로 만드는 재귀 프로 시저를 만들려고 시도합니다. 재귀 호출을 올바르게 할 수 없습니다. 이것은 내가 가지고있는 것이며 내가 붙어 있습니다.

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

테스트 케이스 : (쌍 '(1 2 3)'(ABC)) 원하는 출력 (... (1) (2 b) (3 c)) 전류 출력 (1) a)

답변

2

절차의 재귀 호출에 대한 현재 결과가 cons이면됩니다. 그게 전부입니다!

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

이 역시 수용 가능한 해결책일까요?

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