; 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.