SICP 1.16 - 递归转换为迭代

题目很简单,只要设定一个变量来返回结果和做必要的存储就可以了。

(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)))))

你可能感兴趣的:(Scheme)