Vorherige Seite

Eine Ebene hoch

Nächste Seite

4.4 Rekursion

Es gibt Situationen, in denen sich eine Funktion selbst aufruft. Man spricht von Rekursion, die hier nur anhand eines Beispiels behandelt werden soll.

Das Beispiel soll eine ganze Zahl von Typ unsigned long sedezimal (hexadezimal) auf dem Bildschirm ausgeben. Dafür schreiben wir die Funktion PrintHex die von anderen Programmteilen aus aufgerufen werden kann.

Die übergebene Zahl wird von der kleinsten (rechten) Stelle her Umgewandelt, wird aber dennoch in korrekter Reihenfolge, also von links nach rechts ausgegeben. Die Rekursion erfolgt beim zweiten if-Befehl, welcher die Zahl durch 16 dividiert, und bei einem Ergebnis ungleich 0 wieder die Funktion PrintHex aufruft.

Bei jedem Aufruf der Funktion PrintHex wird ein neuer Parameter Zahl und eine neue lokale Variable c angelegt. Je nach dem wie lang die Zahl ist, können mehrere Variablen mit dem Namen c zur gleichen Zeit existieren.

Die folgende Abbildung illustriert einen Aufruf mit PrintHex(452ul); was zu einer Ausgabe von 1C4 führt: