;; Die ersten drei Zeilen dieser Datei wurden von DrRacket eingefügt. Sie enthalten Metadaten ;; über die Sprachebene dieser Datei in einer Form, die DrRacket verarbeiten kann. #reader(lib "DMdA-beginner-reader.ss" "deinprogramm")((modname factorial) (read-case-sensitive #f) (teachpacks ()) (deinprogramm-settings #(#f write repeating-decimal #f #t none explicit #f ()))) ; Berechne die Fakultät einer natürlichen Zahl (>0) (: factorial (natural -> natural)) (check-expect (factorial 0) 1) (check-expect (factorial 2) 2) (check-expect (factorial 4) 24) #;(define factorial (lambda (n) (if (= n 0) 1 (* n (factorial (- n 1)))))) (define factorial (lambda (n) (fac-iter 1 1 n))) (: fac-iter (natural natural natural -> natural)) (define fac-iter (lambda (cnt prod n) (if (> cnt n) prod (fac-iter (+ cnt 1) (* prod cnt) n))))