pow(b n)=pow(b*b,n/2)#if n is an even number
pow(b n)=b*pow(b,n-1)#else, n is an odd number
####################################################
(define (newpow b n)
    (define (fast-expt n b a)
      (cond ((= n 0) a)
            ((even? n) (fast-expt (/ n 2) (* b b) a))
            (else (fast-expt (- n 1) b (* a b)))))
    (define (even? n)
      (= (remainder n 2) 0))
    (fast-expt n b 1))
####################################################

> (newpow 2 3)
8
> (newpow 5 1)
5

相关文章:

  • 2022-12-23
  • 2021-09-02
  • 2021-11-19
  • 2021-09-04
  • 2022-12-23
  • 2022-12-23
  • 2021-08-05
  • 2021-10-22
猜你喜欢
  • 2021-12-01
  • 2022-12-23
  • 2022-12-23
  • 2021-05-30
  • 2022-12-23
  • 2021-11-23
  • 2021-09-04
相关资源
相似解决方案