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]>> |