Rekursive Methode

Status
Nicht offen für weitere Antworten.

Scorpion

Mitglied
Hi
habe da ein problem!
muss eine rekursive methode schreiben, welche den gesamtwiderstand eines netzwerkes berechnet!
die eingabe ist bereits überprüft und liegt als string vor!
serielle verknüpfung wird mit "+" und parallele mit "/" dargestellt, die einzelnen verknüpfungsebenen sind durch klammern getrennt (20+20/70 u-ä. sind icht erlaubt, nur 20+20+20 oder 20+20/(70) )
z.B.
820+(470/(120+(560/680)))


kann mir jemand damit helfen! bin da leider hilflos, da die rekursive programmierung noch nie zu meinen stärken zählte!
kontaktierung auch unter ICQ --> 287757244
danke im voraus
 

dotlens

Top Contributor
Ich verschieb das mal zu Aufgaben und Gesuche, da kein konkretes Problem vorhanden zu sein scheint
 

Scorpion

Mitglied
hätte eigetlich die ganze rekursive methode benötigt! habe es aber nun dank eines freundes geschafft sie zu schreiben!
danke
 

Sky

Top Contributor
Scorpion hat gesagt.:
hätte eigetlich die ganze rekursive methode benötigt! habe es aber nun dank eines freundes geschafft sie zu schreiben!
danke

Dann poste doch mal bitte die Lösung... vielleicht hilft das ja auch anderen hier!
 

Scorpion

Mitglied
Lösung der rekursiven Methode zur berechnung des gesamtwiderstandes:


Code:
  // berechnet den Widerstand des Netzwerkes indem sich die Methode
  // rekursiv aufruft
  // zurückgegeben wird das Ergebnis
  public float Berechne (String str)
  {
    int pos = suche(str, '+');
    if (pos != -1)
    {
      return Berechne(before(str, pos)) + Berechne(after(str, pos));
    }

    pos = suche(str, '/');
    if (pos != -1)
    {
      return 1 / ((1 / Berechne(before(str, pos))) + (1 / Berechne(after(str, pos))));
    }

    // wennd das Programm an diesen Punkt kommt steht an erster Stelle des String eine Klammer...
    if (str.startsWith("("))
    {
      return Berechne(str.substring(1, str.length() - 1));
    }
    // ...oder der String enthält nur noch eine Zahl
    Float temp = new Float(str);
    return temp.floatValue();
  }


/*
Methode "suche" durchsucht den String nach dem angegebenen Operator, beachtet daber nichts was in Klammern steht.
Methode "before" gibt den Teilstring zurück, der nach der übergebenen Position steht
Methode "after" gibt den Teilstring zurück, der vor der übergebenen Position steht
*/
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben