오상우
오상우

Categories

  • lisp
  • scheme
  • sicp

SW 마에스트로 멘토님의 추천으로 SICP 를 공부중이다. 책에서 사용하는 언어는 Scheme이라고 하는 Lisp의 dialect인데, 지금까지 배운 언어들과는 꽤 다르지만 재밌는 언어다.

연습문제 1.11

tree recursion 에 관한 문제이다. 크게 어렵지는 않다.

(define (f n) 
        (if (> 3 n)
            n
            (+ (- n 1) (* 2 (f (- n 2))) (* 3 (f (- n 3))))))

(define (f-iter a b c counter n)
        (if (= n counter)
            a
            (f-iter (+ counter (* 2 b) (* 3 c))
                a
                b
                (+ counter 1)
                n)))

(f 6)

(f-iter 2 1 0 2 6)

연습문제 1.12

파스칼의 세모꼴 수를 구하는 문제이다. recursive 프로세스로 구현하였다.

(define (p x y)
        (if (or (= y 1) (= x y))
            1
            (+ (p (- x 1) (- y 1))
               (p (- x 1) y))))

(p 5 3)