Rekursion Aufrufbaum

PaulDo

Aktives Mitglied
Was bedeutet die 3 beim Ausdruck a(6,3) ?
Beim Ausdruck a(6) würde ich links die fünf und rechts die vier hinschreiben und die fünf in vier und drei zerlegen und so weiter. Aber wie macht man es bei diesem Ausdruck?
 

KonradN

Super-Moderator
Mitarbeiter
Kannst Du den Kontext noch etwas beschreiben?

Das sieht ansonsten erst einmal nach einem Methodenaufruf aus. Die Methode a hat da jetzt halt 2 Parameter und der erste bekommt die 6 und der zweite die 3.

Wenn es also um Rekursion gibt, dann hast Du halt eine Rekursion mit zwei Eingaben die dann definiert sind.

Also ein einfaches Beispiel (keine Ahnung, ob es Sinn ergibt - einfach mal ausgedacht):
a(x,y) = y falls x = 1
= a(x/2, y+1) falls x gerade
= a(x+1, y+2) falls x ungerade

Bei dem a(6,3) bedeutet dass (6 ist gerade) a(6,3) = a(3,4) = a(4, 6) = a(2, 7) = a(1,8) = 8
(Also einfach die Rekursion mal für dieses Beispiel durchgespielt)

Ging es in die Richtung? Falls nicht bitte einfach mehr Details liefern.
 

PaulDo

Aktives Mitglied
Kannst Du den Kontext noch etwas beschreiben?

Das sieht ansonsten erst einmal nach einem Methodenaufruf aus. Die Methode a hat da jetzt halt 2 Parameter und der erste bekommt die 6 und der zweite die 3.

Wenn es also um Rekursion gibt, dann hast Du halt eine Rekursion mit zwei Eingaben die dann definiert sind.

Also ein einfaches Beispiel (keine Ahnung, ob es Sinn ergibt - einfach mal ausgedacht):
a(x,y) = y falls x = 1
= a(x/2, y+1) falls x gerade
= a(x+1, y+2) falls x ungerade

Bei dem a(6,3) bedeutet dass (6 ist gerade) a(6,3) = a(3,4) = a(4, 6) = a(2, 7) = a(1,8) = 8
(Also einfach die Rekursion mal für dieses Beispiel durchgespielt)

Ging es in die Richtung? Falls nicht bitte einfach mehr Details liefern.

Hier mal die Aufgabe:
int a(int x, int y) {
if (x <= 0 || y < 0) {
return x - y + 2;
}
if (x % 2 == 0) {
return a(x / 2, y) + a(x, y - 1);
}
return a(x - 1, y - 2);
}


Vervollständigen Sie nun den Aufrufbaum für a(6, 3) aus Abbildung 1 . Die Wurzel stellt dabei den Aufruf a(6,3) dar. Die Kinder eines Knoten sind die jeweils auftretenden Methodenaufrufe bei der Ausführung des Elternknotens.


Der erste Knoten links ist a(3/3) mit einem Strang weiter nach unten und rechts a(6/2) mit zwei Strangs nach unten.
Diesen Aufbau verstehe ich nicht. Wie entsteht a(3/3) und wie a(6/2)?
aufrufbaumteil.png
 

KonradN

Super-Moderator
Mitarbeiter
Du kannst das doch durchgehen im Code. Die Methode hast Du ja. Also was passiert bei a(3,3) (Hinweis: Immer auf die richtigen Zeichen achten! a(3/3) ist was anderes als a(3,3)!):
Ist x<=0 oder y < 0? Nein
ist x%2 == 0? Nein
also wird a(3-1, 3-2) aufgerufen.

Genau so kannst Du doch jeden Aufruf weiter durchgehen, oder nicht? Woran scheitert es? Ich sehe gerade keinen Ansatzpunkt Dir zu helfen, da ich gerade nicht sehe, wo es bei dir hakt.
 

PaulDo

Aktives Mitglied
Du kannst das doch durchgehen im Code. Die Methode hast Du ja. Also was passiert bei a(3,3) (Hinweis: Immer auf die richtigen Zeichen achten! a(3/3) ist was anderes als a(3,3)!):
Ist x<=0 oder y < 0? Nein
ist x%2 == 0? Nein
also wird a(3-1, 3-2) aufgerufen.

Genau so kannst Du doch jeden Aufruf weiter durchgehen, oder nicht? Woran scheitert es? Ich sehe gerade keinen Ansatzpunkt Dir zu helfen, da ich gerade nicht sehe, wo es bei dir hakt.
Danke, nun verstehe ich den Ansatz. Aber warum läuft ist diese Funktion nicht unendlich?
 

PaulDo

Aktives Mitglied
Danke, nun verstehe ich den Ansatz. Aber warum läuft diese Funktion nicht unendlich? Wenn x oder y 0 oder kleiner 0 ist, dann wird doch immer die erste if Anweisung ausgeführt? Ich war der Auffassung, dass bei 0 oder minus eigentlich eine 1 oder 0 geworfen werden müsste und dies sind dann die Blätter?
 

Jw456

Top Contributor
Wenn x oder y 0 oder kleiner 0 ist, wird keiner Rekursion mehr gemacht es wird nur das Ergebnis zurückgegen, kein Aufruf von sich selber mehr .
Das ist ja deine Abbruch Bedingung, was jede Rekursion haben sollte .

Tipp: was macht return?

 
Ähnliche Java Themen
  Titel Forum Antworten Datum
N rekursion mehrfach eine Methode Öffnen Allgemeine Java-Themen 4
districon Rekursion und Dynamische Programmierung Allgemeine Java-Themen 2
Zeppi Rekursion StackOverflowError Allgemeine Java-Themen 4
J Rekursion Allgemeine Java-Themen 4
Zrebna Wie kann man endgültig aus einer Rekursion ausbrechen? Allgemeine Java-Themen 14
parrot Rekursion Aufgabe Allgemeine Java-Themen 12
B Rekursion Allgemeine Java-Themen 11
X Wie mache ich hier eine Rekursion rein ? Allgemeine Java-Themen 7
J Rekursion Mergesort Allgemeine Java-Themen 10
R Rekursion Allgemeine Java-Themen 3
R Programm zur Rekursion Allgemeine Java-Themen 5
V Rekursion Allgemeine Java-Themen 2
J Denkfehler Rekursion Allgemeine Java-Themen 5
I Raute mit Rekursion "zeichnen" Allgemeine Java-Themen 7
B Rekursion Allgemeine Java-Themen 2
B Rekursion Allgemeine Java-Themen 22
B Java Sternchen ausgeben mittels Rekursion Allgemeine Java-Themen 3
Hacer Rekursion- sumOfAllNodes Allgemeine Java-Themen 5
L Rekursion Binärbaum Allgemeine Java-Themen 7
Androbin Interpreter-Fehler Probleme mit Rekursion - StackOverflowError Allgemeine Java-Themen 8
Y Rekursion Allgemeine Java-Themen 19
M Permutation ohne Wiederholung mit rekursion Allgemeine Java-Themen 4
J Rekursion oder Iteration - verkettete Listen Allgemeine Java-Themen 8
T Pascalsches Dreieck ohne array und rekursion Allgemeine Java-Themen 9
P Rekursion Allgemeine Java-Themen 9
R Threading und Rekursion führen zu “GC overhead limit exceeded” Allgemeine Java-Themen 4
W Rekursion-Probleme mit return Allgemeine Java-Themen 35
C Rekursion Fibonacci Allgemeine Java-Themen 31
T Rekursion mit While Schleife kombinieren? Allgemeine Java-Themen 4
eQuest Rekursion Dauer Allgemeine Java-Themen 6
Weiti Swingworker und Rekursion Allgemeine Java-Themen 8
L fragwürdige Rekursion Allgemeine Java-Themen 4
L Kleine Rekursion Allgemeine Java-Themen 12
M Rekursion!! Allgemeine Java-Themen 8
J Rekursion in Schleifenkonstrukt wandeln Allgemeine Java-Themen 21
R Rekursion Ablauflogik Allgemeine Java-Themen 19
M Rückwärts geführte Rekursion Allgemeine Java-Themen 3
Schandro StackOverflowError bei Rekursion verhindern Allgemeine Java-Themen 14
G Werte bei Rekursion viel höher als erwartet Allgemeine Java-Themen 3
G Rekursion - Denksport Allgemeine Java-Themen 6
S Rekursion und StackOverflow Allgemeine Java-Themen 11
P Stackoverflow in Rekursion. Bin ich schuld oder Java? Allgemeine Java-Themen 9
W kompliziertes Konstrukt von Schleifen/If/else. Rekursion? Allgemeine Java-Themen 22
S Rekursion Allgemeine Java-Themen 2
Linad Tiefe der Rekursion als Abbruchbedingung Allgemeine Java-Themen 6
Linad Zahlensysteme -> Rekursion Allgemeine Java-Themen 4
N Frage zu einer Rekursion Allgemeine Java-Themen 4

Ähnliche Java Themen

Neue Themen


Oben