迭代求积计算过程[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