問題1.18

僕の解答

(define (even? n)
	(= (remainder n 2) 0))

(define (double n)
	(* n 2))

(define (halve n)
	(/ n 2))

(define (times a b)
	(times-iter a b 1))

(define (times-iter a b product)
	(cond ((= b 0) 0)
	      ((even? b)
	       (times-iter (double a) (halve b) product))
	      (else
	       (times-iter a (- b 1) (+ a product)))))

こんな感じかね?

所感

とりあえず正解。
反復的プロセスだと、doubleはaに適用かぁ。