問題1.16
今回はb^nとかのべき乗の計算を再帰ではなくて反復で解く問題。
(define (fast-expt b n) (fast_expt_iter 1 b n)) (define (even? n) (= (remainder n 2) 0)) (define (fast_expt_iter a b n) (cond ((= n 0) a) ((even? n) (fast_expt_iter (* a (square b)) b (/ n 2))) (else (fast_expt_iter (* a b) b (- n 1)))))
時間が無くて実行すらしてないが、
まぁ、多分こんな感じ。
暇なときにもで実行するか。