|
SketchyLISP Reference |
Copyright (C) 2007 Nils M Holm |
| <<[explode] | [Index] | [factorial]>> |
Conformance: R5RS Scheme
Purpose: Raise a number to a power. Return x raised to the power of y. X may be a natural or integer number. Y must be natural.
Arguments:
X - number (base)
Y - number (exponent)
Model:
(define (expt x y)
(letrec
((exp
(lambda (x y r)
(cond ((zero? y) r)
(else (exp x (- y 1) (* x r)))))))
(exp (integer x) (natural y) 1)))
Implementation:
(define (expt x y)
(letrec
((square
(lambda (x)
(* x x)))
(_expt
(lambda (x y)
(cond ((zero? y) 1)
((even? y)
(square (_expt x (nquotient y 2))))
(else (* x (square (_expt x (nquotient y 2)))))))))
(_expt (integer x) (natural y))))
Example:
(expt 2 5) => 32
| <<[explode] | [Index] | [factorial]>> |