SICP 연습문제 2.17 친절한 풀이

문제

(빈 리스트가 아닌) 리스트를 인자로 받아, 그 리스트의 마지막 원소만으로 이루어진 리스트를 내놓는 last-pair 프로시저를 정의하라.

문제로 부터 얻은 것

스킴에서 리스트를 어떻게 표현하는 지에 관한 이해도가 상승했습니다.

문제풀이

어떤 리스트의 원소가 마지막 원소인지 알기 위해서는 그 원소의 바로 뒤 원소가 null임을 확인해야 합니다. 이 아이디어를 기반으로 프로시저를 구성하면 아래와 같습니다.

(define (last-pair x)
(define (last-element z)
(if (null? (cdr z))
(car z)
(last-element (cdr z))))
(list (last-element x)))



테스트 코드로 문제에서 제시한 코드를 사용하면 제대로 동작하는 것을 확인할 수 있습니다.

(34)를 반한하는 모습



읽어주셔서 감사합니다.