; end und normal rekursiv.scm ;;; Beispiel: Fakultaet ;;; normal rekursiv: (define (fakultaet n) (if (zero? n) 1 (* n (fakultaet (sub1 n))))) ;;; Test: (fakultaet 5) ;;; endrekursiv mit lokaler Schleife: (define (fac n) (let loop ((n n) (akku 1)) (if (zero? n) akku (loop (sub1 n) (* n akku))))) ;;; Test: (fac 5)
Die mit loop benannte let - Schleife ermöglicht uns Iteration, ohne den Akkumulator akku beim Aufruf mit übergeben zu müssen. fac selbst stellt also nur eine Aufrufhülle dar.