(require (lib "trace.ss")) (define (cputime f . args) (define-values (result cpu real gc) (time-apply f args)) (* 1.0 cpu)) (define (factor o n f . args) (define-values (result cpu real gc) (time-apply f args)) (* 1.0 (/ cpu (o n)))) ;Aufgabe 1 (define (alignments m n) (if (or (= m 0) (= n 0)) 1 (+ (alignments (- m 1) n) (alignments (- m 1) (- n 1)) (alignments m (- n 1))) ) ) ;(alignments 5 9) (define (fak n) (if (<= n 1) 1 (* n (fak (- n 1))))) (define (alignments-i m n) (define (alignments-for-length l) (define (sum-fak a b) (cond ((> a b) 0) (else (+ (/ (fak a) (* (fak (- a m)) (fak (- a n)) (fak (- b a)))) (sum-fak (+ a 1) (+ m n)))) ) ) (sum-fak l (+ m n)) ) (alignments-for-length (max m n)) ) ;(alignments-i 50 90) ; ;Aufgabe 2 (define (f n) (if (< n 3) 1 (+ (* 3 (f (- n 1))) (* -2 (f (- n 2))) (* 3 (f (- n 3)))) ) ) ; Laufzeitabschätzung (define basis 1.84) (define (f-o n) (expt basis n)) ; Bestimmung des Proportionalitätsfaktors (factor f-o 20 f 20) (factor f-o 21 f 21) (factor f-o 22 f 22) (factor f-o 23 f 23) (factor f-o 24 f 24) (factor f-o 25 f 25) (factor f-o 26 f 26) (factor f-o 27 f 27) (factor f-o 28 f 28) (factor f-o 29 f 29) ; Proportionalitätsfaktor ca. 0.00067 (/ (* 0.00067 (f-o 100)) 1000 60 60 24 365)