tail recursion
- In jedem Rekursionsschritt werden die Berechnungen zuerst gemacht, der rekursive Aufruf zuletzt
- Zusätzlicher Parameter für Zwischenergebnisse nötig
- Ergebnis ist im Rekursionsanker fertig
potenztc x 0 s = s -- Rekursionsanker
potenztc x n s = (potenztc x (n - 1) (x * s))
potenz x n = potenztc x n 1 -- Startwert
(potenz 2 3)
(potenztc 2 3 1)
(potenztc 2 2 (2 * 1))
(potenztc 2 1 (2 * (2 * 1)))
(potenztc 2 0 (2 * (2 * (2 * 1))))
(2 * (2 * (2 * (1)))) -- Rekursionsanker
(2 * (2 * (2)))
(2 * (4))
(8)