SICP, 1.9

(define inc (lambda (n) (+ n 1)))
;Value: inc

(define dec (lambda (n) (- n 1)))
;Value: dec

(define (plus a b)
  (if (= a 0)
      b
      (inc (plus (dec a) b))))
;Value: plus

----

(plus a b) 식을 계산하려면 인자 a 가 0이 될 때 까지 계속해서 리커전 해야한다.

----

(define (plus2 a b)
  (if (= a 0)
      b
      (plus (dec a) (inc b))))
;Value: plus2

----

그에 반해 (plus2 a b) 식을 계산하는 것은 tail recursion 으로 구현 가능하다.

이 글과 관련있는 글을 자동검색한 결과입니다 [?]

by 나젤큐스 | 2008/07/18 19:36 | 트랙백 | 덧글(3)

트랙백 주소 : http://nijelprim.egloos.com/tb/1982598
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Commented by 전효종 at 2008/07/20 17:03
저기 죄송한데요 SICP를 처음 공부하려고 하는 학생입니다.ㅜㅜ
이거 연습문제도 풀어 보고 싶은데 scheme 컴파일러 뭐 그런게 있어야 하나요?
LISP컴파일러가지고도 되나요? 혹시 어떤걸 가지고 사용하시는지ㅠㅠ 좀 알려주시면 안될까요?
초보라서 인터넷을 뒤지고 있긴한데 어렵네요 ㅜㅜ휴 ;;;
Commented by 남훈 at 2008/07/21 13:30
http://www.schemers.org
를 추천해드립닌다.

LISP 으로 하는것도 무리는 없는데요 스킴하고 리스프가 문법이 살짝 달라서요 SICP 공부하시라면 그냥 스킴용 쓰는게 제일 편할거 같아요.
Commented by 전효종 at 2008/07/22 10:10
앗 감사 합니다 ^^;;

아직 초보라서 이건 ;;ㅎ 뭘 어찌 해야할지 모르겠네요 ㅎ 아무튼 고맙습니다. ㅎ

:         :

:

비공개 덧글

◀ 이전 페이지          다음 페이지 ▶