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

잘 작동하는군요.^^
저는 이렇게 만들었습니다.
책에 나오는 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))
"in OCW" 카테고리의 다른 글
- SICP Exercise 연습문제 2.21 (0)2008/02/04
- SICP Exercise 연습문제 2.20 (0)2008/02/02
- SICP Exercise 연습문제 2.19 (0)2008/02/02
- SICP Exercise 연습문제 2.18 (0)2008/02/02
- SICP Exercise 연습문제 2.17 (0)2008/02/02
- SICP Exercise 연습문제 2.15, 2.16 (0)2008/01/31
- SICP Exercise 연습문제 2.14 (0)2008/01/31
글에 잘못된 점, 다른 점, 부족한 점이 있다면 지적해주세요.
댓글, 트랙백, 메일 모두 고맙습니다.







댓글을 달아 주세요