이 문제는 list를 거꾸로 뒤집는 reverse 프로시저를 만드는 문제입니다.

 

c3

잘 작동하는군요.^^

 

저는 이렇게 만들었습니다.

책에 나오는 append 프로시저를 써서 마지막까지 탐색한 다음

되돌아오면서 list를 만들도록 하였습니다.

즉, 왼쪽에서 오른쪽이 아닌 오른쪽에서 왼쪽으로 읽어갔기에 reverse입니다.

 

이 외에 다른 여러 방법이 있으리라 생각하지만,

아직 자료구조나 알고리즘을 배우지 않아 잘 모르겠습니다.

후에 배우게 되면 다른 방법으로 만들어봐야겠습니다.^^

 

 

참조

Structure and Interpretation of Computer Programs 2/E - Page 133

 

 

(define (reverse items)
  (if (null? (cdr items))
      items
      (append (reverse (cdr items)) (list (car items)))))

(define (append list1 list2)
  (if (null? list1)
      list2
      (cons (car list1) (append (cdr list1) list2))))

(reverse (list 1 4 9 16 25))
(reverse (list 1 3 5 7 9 11 13 15 17 19 21))

크리에이티브 커먼즈 라이선스
Creative Commons License

글에 잘못된 점, 다른 점, 부족한 점이 있다면 지적해주세요.
댓글, 트랙백, 메일 모두 고맙습니다.

트랙백 주소 :: http://nosyu.pe.kr/trackback/1314

댓글을 달아 주세요

[로그인][오픈아이디란?]