; ======================================================================
;
; Structure and Interpretation of Computer Programs
; (trial answer to excercises)
;
; 计算机程序的构造和解释(习题试解)
;
; created: code17 02/28/05
; modified:
; (保持内容完整不变前提下,可以任意转载)
; ======================================================================
;; SICP No.1.16
(define (fast-expt b n)
(expt-iter b n 1))
(define (expt-iter base power surplus)
(cond ((= power 0) surplus)
((even? power) (expt-iter (* base base)
(/ power 2)
surplus))
(else (expt-iter (* base base)
(/ (- power 1) 2)
(* surplus base)))))
(define (even? n)
(= (remainder n 2) 0))
;; Test-it:
;; Welcome to MzScheme version 209, Copyright (c) 2004 PLT Scheme, Inc.
;; > (fast-expt 2 0)
;; 1
;; > (fast-expt 2 1)
;; 2
;; > (fast-expt 2 7)
;; 128
;; > (fast-expt 2 10)
;; 1024
;; > (fast-expt 3 9)
;; 19683
;; >