迭代求积计算过程[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
浙公网安备 33010602011771号