問題1.15
問題1.16
(define (expt b n)
(expt-iter b n 1))
(define (expt-iter b counter product)
(cond ((= counter 0) product)
((even? counter) (square (expt-iter b (/ counter 2) product)))
( else (expt-iter b (- counter 1) (* b product)))))
(define (even? n)
(= (remainder n 2) 0))
(define (square x)(* x x))
問題17
(define (double x) (+ x x))
(define (halve x)
(cond ((even? x) (/ x 2))
(else 0)))
(define (even? x)
(= (remainder x 2) 0))
(define (new-times a b)
(cond ((= b 0) 0)
((even? b)(double (new-times a (halve b))))
(else (+ a (* a (- b 1))))))