|
PROCEDURE Factorial(n: INTEGER) : INTEGER; VAR result: INTEGER; BEGIN result := 1; WHILE n > 0 DO result := result * n; DEC(n); END; RETURN result END Factorial; |
Viele Probleme lassen sich mindestens genauso elegant
und deutlich effizienter auch iterativ lösen.
| |
Dies gilt insbesondere in Fällen von tail recursion,
die sofort durch eine Schleife ersetzt werden können, da
kein ``verschachtelter Zustand'' existiert, der durch eine
Rekursion repräsentiert werden müßte.
| |
Bei einer tail recursion erfolgt der rekursive
Aufruf (wenn überhaupt) nur ganz am Schluß:
|
PROCEDURE TailRecursion(...); BEGIN IF (* einfacher Fall *) THEN (* ... *) ELSE (* ... *) TailRecursion(...); END; END TailRecursion; |
Copyright © 1999, 2004 Andreas F. Borchert, in HTML konvertiert am 28.01.2005 |