SICP 연습문제 2.27 친절한 풀이
문제
연습문제 2.18에서 만든 reverse 프로시저를 고쳐서, 리스트를 인자로 받는 deep-reverse 프로시저를 짜보라. deep-reverse 프로시저는 리스트의 원소 차례를 뒤집을 뿐 아니라, 모든 부분 리스트를 따라 내려가서 그 원소들의 차례도 다 뒤집는다. 두 프로시저를 만들어 돌려보면, 아래와 같은 결과가 나와야 한다.
(define x (list (list 1 2) (list 3 4))) |
문제로 부터 얻은 것
pair?를 사용해볼 수 있는 기회였습니다.
문제풀이
연습문제 2.18의 reverse 프로시저는 아래와 같습니다.
(define (reverse x) |
기존의 프로시저에서 제가 손댄 곳은 if문의 안쪽밖에 없습니다. 그 방법은, null?을 검사한 후에 (pair? (car x))를 한번 더 검사하는 것입니다. 만약 이번에 검사하는 리스트의 원소가 또다른 리스트라면, reverse한 값을 넘겨주면 되는 것입니다.
(define (deep-reverse x) |
읽어주셔서 감사합니다.