僕の解答
(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に適用かぁ。