Beliebiges Potenzieren mit Scheme

Leider gibt es in Scheme keine Funktion um eine Zahl beliebig zu potenzieren. Daher hab ich eine kleine Funktion dafür geschrieben:

;; Contract: ^ number number -> number
;; Purpose: Returns result of number1^number2
;; Example: (^ 2 10) -> 1024
;;          (^ 2 -2) -> 0.25
(define (^ x exp)
  (cond
    [(> exp 1) (* x (^ x (- exp 1)))]
    [(< exp 0) (/ 1 (* x (^ x (- (- exp) 1))))]
    [(= exp 1) x]
    [(= exp 0) 1]))

(check-expect (^ 2 10) 1024)
(check-expect (^ -52 0) 1)
(check-expect (^ 2 -3) (/ 1 8))
PDF Drucker    Sende Artikel als PDF an

Schlagworte: , , ,

Kommentieren