# Rekursive Methode



## Scorpion (11. Jan 2005)

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


----------



## foobar (11. Jan 2005)

Was genau ist denn das Problem? Was verstehst du denn nicht?


----------



## dotlens (12. Jan 2005)

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


----------



## Scorpion (12. Jan 2005)

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


----------



## Sky (12. Jan 2005)

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 (13. Jan 2005)

Lösung der rekursiven Methode zur berechnung des gesamtwiderstandes:



```
// 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
  */


----------

