SICPの宿題
問題1.14がワカラナイヨ。
明日の答え合わせで教えてもらおう。
問題1.16
;; if n is even, procedure returns true, otherwise false. (define (even? n) (= (remainder n 2) 0)) ;; ex1.16 procedure "fast-expt and fast-expt-iter" (define (fast-expt x n) (fast-expt-iter x n 1)) (define (fast-expt-iter x n a) (cond ((= n 0) a) ((even? n) (fast-expt-iter (* x x) (/ n 2) a )) (else (fast-expt-iter x (- n 1) (* a x) ))))
問題1.17
;; double (define (double n) (+ n n)) ;; halve (define (halve n) (/ n 2)) ;; ex1.17 procedure "fast-mult" (define (fast-mult x n) (cond [(= n 0) 0] [(= n 1) x] [(even? n) (fast-mult (double x) (halve n))] [else (+ x (fast-mult x (- n 1)))]))
問題1.18
;; ex1.18 procedure "fast-mult and fast-mult-iter" (define (fast-mult x n) (fast-mult-iter x n 0)) (define (fast-mult-iter x n a) (cond [(= n 0) a] [(even? n) (fast-mult-iter (double x) (halve n) a)] [else (fast-mult-iter x (- n 1) (+ x a))]))