PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Rekursion -- Definitionsfrage



ContainerDriver
03-08-2004, 19:09
Hallo liebe Programmierer,
ich habe ein Frage bezüglich zur Rekursion.
Ich habe eine Klasse mit einer Funktion (spriche einer Methode). Diese Funktion rufe ich in main() auf (als Funktion von einer Instanz der Klasse).
Diese Funktion ruft dann wiederum die selbe Funktion auf, allerdings von einer anderen Instanz der Klasse.
Mit Code sieht das so aus:


class Test
{
public:
void test (void);
}

void Test::test(void)
{
b->test();
}

class Test a;
class Test b;
//...zu main()
a->test();
//...


Hier sind zwar jetzt nur 2 Funktionsaufrufe von Test::test() zu sehen, allerdings ist mein Programm etwas komplexer und rein theoretisch sind unendlich viele Funktionsaufrufe möglich (allerdings wie oben erläutert, jeweils von einer anderen Instanz der Klasse).

Handelt es sich jetzt hierbei um eine echte Rekursion?

Gruß, Florian

PS: Vlt. fragt ihr euch warum ich diese Frage stelle: ich will in der Doku zu dem Prog schreiben, dass alles auf einem rekursiven Funktionsaufruf basiert, allerdings bin ich mir ja da nicht so sicher, ob das wirklich eine Rekursion ist, deshalb die Frage.

Boron
03-08-2004, 19:40
Ich würde das nicht als "rekursiven Aufruf" bezeichnen, da ja nur eine gleichnamige Methode eines anderen Objekt aufgerufen wird.

Bei echter Rekursion ruft einen Methode/Funktion sich selbst auf. In einer Klasse bleibt also der Funktionsaufruf innerhalb des Objekts.

ContainerDriver
04-08-2004, 17:24
Vielen Dank für deine Antwort!
Klingt schlüssig!

Gruß, Florian

anda_skoa
05-08-2004, 11:19
Es gibt auch alternierende Rekursion, wenn also eine Funktion A eine Funktion B aurfruft und die wiederum Funktion A usw.

Wenn also die beiden Instanzen jeweils einen Pointer auf die andere haben und in der eigenen Methode immer die Methode der anderen Instanz aufrufen, ist das sehr wohl eine Rekursion.

Ciao,
_

Pingu
05-08-2004, 12:21
Das sagt Wikipedia dazu: http://de.wikipedia.org/wiki/Rekursion

Pingu