Donnerstag, 4. Juli 2024
18.3 C
Berlin

Rekursive Funktionen in C++

Eine Funktion kann nicht nur eine andere Funktion aufrufen, sondern auch sich selbst. Dieser Vorgang wird Rekursion oder rekursiver Aufruf genannt. Nur die Funktion main() bildet hier eine Ausnahme, sie darf nicht von anderen Funktionen noch aus sich selbst heraus sondern nur vom Betriebssystem aufgerufen werden.

 

 

Gegen die Verwendung einer rekursiven Funktion ist nichts zu sagen, sie ist lediglich etwas langsamer und verbraucht mehr Arbeitsspeicher als eine Schleifen-Lösung. Dafür ist der Programmcode kompakter und übersichtlicher. Sollten jedoch bei der Ausführung Probleme mit der Geschwindigkeit auftreten, ist eine eine rekursive Funktion leicht durch eine Schleife zu ersetzen.

[sc name=“adsense_InText_ad“]

Genau wie eine Schleife benötigt eine rekursive Funktion einen Zähler und eine Bedingung die festlegt, wann der Selbstaufruf abgebrochen wird, weil die Bedingung erfüllt ist. Die allgemeine Syntax sieht so aus:

Rückgabe-Typ Funktionsname (Parameter)

{

            Auszuführender Befehl;

            Vorwärtszähler;

            Test-Bedingung für den Ausstieg;

}

Bei jedem Durchlauf wird der Wert des Zählers geändert und praktisch an die Funktion zurückgegeben. Das folgende Programm zeigt ein Beispiel:

 

Übung: Rekursive Funktion

Programm: rekursiv.cpp

 

#include <iostream>

using namespace std;

//Deklaration von zwei Funktions-Prototypen

int berechneFakultaet (int, int);

int fakultaet (int);




int main ()

{

berechneFakultaet (1,8);    //Funktionsaufruf    

system("pause");

return 0;

}

            //Rekursive Funktion fuer den ersten Prototypen

            int berechneFakultaet (int num, int max)

            {

            cout << "Fakultaet von " << num << ": ";

            cout << fakultaet (num)      << endl;

            num++;

            if (num > max) return 0; //Ausgang

            else berechneFakultaet (num, max);

            }

            //Rekursive Funktion fuer den zweiten Prototypen

            int fakultaet (int n)

            {

            int ergebnis;

            if (n==1) ergebnis = 1;

            else ergebnis = (fakultaet (n-1) * n); //Runterzaehlen

            return ergebnis;

            }

 

Speichern Sie das Programm, kompilieren Sie es anschließend und schauen Sie sich das Ergebnis an. Ausgegeben wird eine Liste mit Fakultäten der Zahlen 1 bis 8 (Beispiel: Fakultät 3 ist 3 x 2 x 1 = 6).

Rekursive Funktionen in C++
Rekursive Funktion.
Praxistipp: Denken Sie daran: Eine unendliche Schleife oder rekursive Funktion können Sie mit der Tastenkombination Ctrl + C abbrechen.

 

 

Dieser Artikel ist Teil unseres kostenlosen Workshops “C++ Programmieren lernen” – Geeignet für Einsteiger und Fortgeschrittene. Machen auch Sie mit und lernen Sie in 50 Artikeln, wie Sie Programme selbst schreiben!

 

 

Artikelbild: Fotolia / bramgino

 

PC-Reparatur.Shop - Team
PC-Reparatur.Shop - Team
Wenn Sie Fragen oder Anregungen zu diesem Beitrag haben, wenden Sie sich bitte direkt über die E-Mail Adresse blog@pc-reparatur.shop an unser Team - Vielen Dank!
Bewertung des Artikels: 1 Stern2 Sterne3 Sterne4 Sterne5 Sterne

IN EIGENER SACHE

Ähnliche Artikel