Rekursion
-
Hi,
ich beschäftige mich zur Zeit mit dem schwierigen Thema Rekursion. Die folgende rekursive Funktion habe ich programmiert:
void schacht_tiefe(double tiefe1, double tiefe2, double zeit) { double tiefe, diff; rekursion++; tiefe = 0.5 * (tiefe1+tiefe2); diff = sqrt(2*tiefe/ERDBESCHL) +tiefe/SCHALL - zeit; if (diff >= 0.0) tiefe1 = tiefe; else tiefe2 = tiefe; printf("\n\t\t %1d .Berechnungslauf: %5.2f Meter",rekursion, tiefe); if (fabs(diff) > ABWEICHUNG) schacht_tiefe(tiefe1, tiefe2, zeit); }
Ist dies Rekursion? Habe ich das so richtig verstanden?
Gruß
KlausM
-
Tag,
Ja das ist Rekursion. Rekursion bedeutet dass eine Funktion sich selbst aufruft. Und das tut deine Funktion.
-
Ja, das ist Rekursion. Allerdings Endrekursion, das heißt im Klartext, dass du das ganze genauso gut als Schleife schreiben könntest (die dazu nötige Transformation könnte man automatisch durchführen lassen). Ob du es verstanden hast ist schwer zu sagen. Ein klares JA geht jedenfalls aus dem Beispiel nicht hervor ...
-
Quicksort ist nen gutes Beispiel für Rekursion, dieser Algorithmus ist am einfachsten
durch Rekursion zu implementieren und läuft nur so lange bis er sein Ziel
erreicht hat, deiner läuft bis ins unendliche.
-
SirLant schrieb:
Quicksort ist nen gutes Beispiel für Rekursion, dieser Algorithmus ist am einfachsten
durch Rekursion zu implementieren und läuft nur so lange bis er sein Ziel
erreicht hat, deiner läuft bis ins unendliche.Öhm nein er läuft nicht bis ins unendliche. Wenn das letzte If-Statement falsch ist ruft sie sich nicht mehr auf und steigt wieder aus der Rekursion auf.