# Rekursiver Rechner ## Repo zur Aufgabe Hier: https://gitty.informatik.hs-mannheim.de/3029257/Rekursiver_Rechner_Aufgabenstellung finden Sie ein git-repo mit der Aufgabenstellung und Tests. Sie müssen lediglich die Funktion: `double RekursiveSquentielleBerechnung()` vervollständigen. Mit Hilfe der Tests weiß man, ob die Aufgabe korrekt ist. ## Aufgabe Erstellen Sie einen Rechner der [Sequentielle Eingabe](https://de.wikipedia.org/wiki/Taschenrechner#Eingabelogik) zum Berechnen des Ergebnisses rekursiv verwendet. In dem Eingabe String sind nur die folgenenden Zeichen erlaubt: 0-9.+-/* ## Sequentielle Eingabe erklärt Wikipedia: [Sequentielle Eingabe (Deutsch)](https://de.wikipedia.org/wiki/Taschenrechner#Eingabelogik) ``` Bsp.: 5.5+4.5*10 ``` Normale Berechnung (Algebraische Notation): ``` 5.5+4.5*10 | Klammern setzen (Rangfolge der Operatoren beachten) =5.5+(4.5*10) =5.5+45 =50.5 ``` Sequentielle Eingabe: ``` 5.5+4.5*10 |Von links nach rechts berechnen (ohne Beachtung der Rangfolge der Operatoren) =10*10 =100 ``` Hinweis: Der "normale" Windows Rechner arbeitet nach dem Sequentiellen Eingabe Prinzip. ## Weitere Hinweise ### Randfälle definiert Falls ein Operator am Ende des Strings steht, soll er ignoriert werden. Bsp.: ``` + - / * 10+ 10- 10/ 10* =10+0 =10-0 =10/1 =10*1 =10 =10 =10 =10 ``` Falls Operator an Operator steht, soll er das Ergebniss nicht ändern. Bsp.: ``` +++ --- /// *** +-/* 10++++5 10----5 10////5 10***5 10+-/**5 =10+0+0+0+5 =10-0-0-0-5 =10/1/1/1/5 =10*1*1*1*5 =10+0-0/1*1*5 =15 =5 =2 =50 =50 ``` Falls ein Operator an erster Stelle steht ist die vorhergehende Zahl 0. Bsp.: ``` + - / * =0+0 =0-0 =0/1 =0*1 =0 =0 =0 =0 ``` Zahlen wie "5." entsprechen "5.0" und ".5" entsprechen "0.5". Nur "." als Zahl ist ungültig. Bei Rechnungen "/0" soll als Ergebniss `Double.POSITIVE_INFINITY` oder `Double.NEGATIVE_INFINITY` zurück gegeben werden. (Das macht Java bei Rechnungen "/0" von sich aus.)