Methoden Rekursive Methode berechnen

dan1996

Aktives Mitglied
Hallo, ich komme bei dieser Aufgabe nicht weiter. Man soll diese rekursive Methode berechnen mit den Parameter f(11, 8). Kann mir jemand weiter helfen wie man das berechnen soll

Java:
static int f(int x, int y) {
          if (x == 1)
            return y + 1;
          else if (x == y)
              return f(x - 2, y);
        else
              return f(x % 2, f(x - 2, y + 1) + 2);
      }
 

Robat

Top Contributor
Du gehst die Methode Schritt für Schritt durch und schreibst dir die jeweiligen Werte auf, solange bis die Rekursion terminiert.
 

httpdigest

Top Contributor
Eine gute Weise bei solchen Aufgaben/Rekursionen vorzugehen, ist schrittweise Ersetzung von Teilausdrücken durch ihre jeweiligen weiteren rekursiven Aufrufe. Ich mach das mal für den Anfang vor und dann kannst du das bis zu Ende weiterführen:
Code:
f(11, 8)                         // <- else, da weder 7 == 1 noch 7 == 9
  = f(1, f(9, 9) + 2)            // <- (x == y), da (9 == 9)
  = f(1, f(7, 9) + 2)            // <- else, da weder 7 == 1 noch 7 == 9
  = f(1, f(1, f(5, 10) + 2) + 2) // <- else, da weder 5 == 1 noch 5 == 10
  = ... hier kommen weitere Ersetzungen durch dich ...
  = 25
Denke immer daran, den innersten Aufruf von 'f' zu ersetzen. Dabei gehst du so vor, dass du dir die konkreten Argumente anguckst (z.B. am Anfang (11, 8)) und schaust, welcher Fall hier eintritt. Und dann ersetzt du den ursprünglichen f(11, 8) Aufruf/Ausdruck eben durch das, was der eingetretene Fall machen würde. In diesem Fall also f(1, f(9, 9) + 2).
 

Neue Themen


Oben