这道题是这样的,定义一个过程,利用公式 
  b^n  =  (b ^ (n / 2) ^ 2)  (n为偶数) 
  b^n  =  b * b ^ (n - 1)    (n为奇数)
求b的n次幂.
这道题的诀窍就是定义一个不变量a, 使得a每次都保存着上次计算出的值.然后一层层递归下去, 直到n的值为1的时候,a就是要求的值.感觉迭代真的比直接递归要难理解得多
具体程序如下:
 
     

(define (square x)
  (* x x))


(define (fast-expt-1 b n)
  (define (fast-expt-iter a temp b n)
  (cond ((= n 0) 1)
        ((= n 1) (* a temp))
        ((= (remainder n 2) 0) (fast-expt-iter (square a) temp b (/ n 2)))
        (else (fast-expt-iter (square a) (* temp b) b (/ (- n 1) 2)))))
  (fast-expt-iter b 1 b n))