Ein negatives Beispiel für die Verwendung vonRekursion ist die Fakultätsberechnung.
Beispiel für eine ungeeignete Lösung: Fakultätsberechnung mitteles Rekursion (in Pascal)
Function Factorial
(
Number: integer
): integer;
begin
if ( Number = 1 ) then
Factorial := 1;
else
Factorial := Number * Factorial( Number - 1 );
end; (* Fraction *)
Diese Funktion ist langsam und läßt keine Vorhersage des Speicherbedarfs zur Laufzeit zu. Hier ist die iterative Version leichter verständlich und eine
Aussage über den Speicherbedarf ist möglich.
Beispiel für eine zweckmäsige Lösung: Iterative Berechnung der Fakultät (in Pascal)
Function Factorial
(
Number: integer
): integer;
var
IntermediateResult: integer;
Factor: integer;
begin
IntermediateResult := 1;
For Factor := 2 to Number do
IntermediateResult := IntermediateResult * Factor;
Factorial := IntermediateResult;
end; { Fraction }
Viele Lehrbücher verwenden die Fakultätsberechnung für ein Beispiel der Rekursion. Dieses einfache Beispiel rückt aber die Rekursion in ein falsches
Licht. Die Rekursion sollte wirklich nur dort angewandt werden, wo sie auch wirklich Vorteile bringt.
|