题目很简单,只要设定一个变量来返回结果和做必要的存储就可以了。
(define (fastexpt a b n p)
(cond ((= n 0) p)
((= (remainder n 2) 1) (fastexpt (* a b) b (- n 1) (+ p 1)))
(else (fastexpt a (* b b) (/ n 2) (+ p 1)))))