시간: 2010.12.7 PM 6:30
<복습>
<복습>
범위: 1.2.3 ~ 1.2.4
발표: 유훈종
<진도>
범위: 1.2.5 ~ 1.2.6
발표: 이준
;;EXERCISE 1.15 (define (cube x) (* x x x)) (define (p x) (display "; call p\n") (- (* 3 x) (* 4 (cube x)))) (define (sine angle) (if (not (> (abs angle) 0.1)) angle (p (sine (/ angle 3.0)))))
;; Linear recursion ;; Θ(n), Θ(n) (define (expt b n) (if (= n 0) 1 (* b (expt b (- n 1)))))
;; Linear iteration ;; Θ(n), Θ(1) (define (expt b n) (expt-iter b n 1)) (define (expt-iter b counter product) (if (= counter 0) product (expt-iter b (- counter 1) (* b product))))
;; Logarithmic iteration (define (fast-expt b n) (cond ((= n 0) 1) ((even? n) (square (fast-expt b (/ n 2)))) (else (* b (fast-expt b (- n 1)))))) (define (even? n) (= (remainder n 2) 0))
;; EXERCISE 1.16 (define (proc-expt b n) (define (iter b n a) (cond ((= n 0) a) ((even? n) (iter (square b) (/ n 2) a)) (else (iter b (- n 1) (* a b))))) (iter b n 1) )
;; EXERCISE 1.17 (define (custom-mult a b) (if (= b 0) 0 (+ a (custom-mult a (- b 1))))) (define (double x) (* x 2)) (define (halve x) (/ x 2)) (define (fast-mult a b) (cond ((or (= a 0) (= b 0)) 0) ((= b 1) a) ((even? b) (double (fast-mult a (halve b)))) (else (+ a (fast-mult a (- b 1)))))) ; (fast-mult 3 5) ; (+ 3 (fast-mult 3 4)) ; (+ 3 (double (fast-mult 3 2))) ; (+ 3 (double (double (fast-mult 3 1)))) ; (+ 3 (double (double 3))) ; (+ 3 (double 6)) ; (+ 3 12)
;; EXERCISE 1.18 (define (proc-mult b n) (define (iter b n a) (cond ((= n 0) a) ((even? n) (iter (double b) (halve n) a)) (else (iter b (- n 1) (+ a b))))) (iter b n 0) )