This Scheme code example shows how to implement exponents by raising a given base by a given exponent through succesive squaring.
Given the base b and the exponent n, the code determines if the exponent is zero, in which case it returns one. Otherwise, it determines if n is even and can be divided by two or if an odd adaptation needs to be performed first.
(define (exp b n)
(cond ((= n 0) 1) ;0 base case
((= n 1) b) ;1 base case
((even? n) (exp (square b) (/ n 2))) ;even case using (b^2)^n/2
(else (* b (exp b (+ n -1))))) ;odd case using b*b^n-1
Questions/Comments: [email protected]
-William. § (marvin_gohan)