Alex He

...永远保持希望与激情...约会未来更强大的自己...

 

迭代求积计算过程[Lisp]

multiply(a b)=multiply(2*a,b/2)#if  b is an even number

multiply(a b)=a+multiply(a,b-1)#if  b is an odd number

################################################################
(define (newmultiply a b)  
  (define (fast-expt a b ans)
    ( cond((= b 0) ans)
          ((= (remainder b 2) 0) (fast-expt (* a 2) (/ b 2) ans))
          (else (fast-expt a (- b 1) (+ ans a)))))
  (fast-expt a b 0))
################################################################

> (newmultiply 45 20)
900

posted on 2011-11-10 09:26  Alex木头  阅读(312)  评论(0编辑  收藏  举报

导航