Announce/Chapter.1
10일차 - 1.3.4 연습문제 1.42~45
쑤구니
2010. 12. 24. 11:55
ex 1.42
(define (compose f g) (lambda (x) (f (g x)))) ((compose square inc) 6) ;; => 49
ex 1.43
(define (repeated f i) (define (iter g n) (if (= n 1) g (iter (compose g f) (- n 1)))) (iter f i)) ((repeated inc 10) 0) ;; => 10 ((repeated square 2) 5) ;; => (square (square 5)) => 625
ex 1.44
(define (smooth f) (lambda (x) (/ (+ (f (- x dx)) (f x) (f (+ x dx))) 3))) (define (smooth-n f n) ((repeated smooth n) f))
ex 1.45
(define (cube-root x) (fixed-point (average-damp (lambda (y) (/ x (square y)))) 1.0)) ;; (cube-root 27) (define (4th-root x) (fixed-point (average-damp (lambda (y) (/ x (* y y y)))) 1.0)) ;; (4th-root 16) => infinite loop ;; y -> x/y^(n-1) 은 몇번 average-damp 해야 하는지 실험하기 (define (nth-root x n) (fixed-point ((repeated average-damp n) (lambda (y) (/ x (expt y (- n 1))))) 1.0)) ;; 실험 결과.. 패턴이 안보인다 ;; n = 4 > 2 ;; n = 5 > 2 ;; n = 13 > 3 ;; n = 22 > 2