Rekursive Methode

thomas_tom

Neues Mitglied
Einer Methode wird nur der Wert String und Character übergeben. Nun wird im String rekursiv nach dem übergebenen Character gesucht. Wenn gefunden, dann wird dieser Character verdoppelt und ein neuer String ausgegeben. Zusätzlich soll die Anzahl der Verdoppelung angehängt werden. Wie schaffe ich es aber nun, am Ende des Strings statt z.B. ABC1111 -> ABC4 ausgegeben zu bekommen. Schleifen dürfen nicht verwendet werden. Der Methodenkopf darf auch nicht verändert werden.
 

Barista

Top Contributor
Du könntest die Länge des Strings vor und nach dem Verlängern (allen Verlängerungs-Operationen) vergleichen und den Unterschied schließlich an den String anhängen.

Weil in der String-Verbindungs-Operator Plus in Java eine Konvertierung beliebiger Typen nach String vornimmt, musst Du nicht mal den int-Unterschiedswert nach String konvertieren.
 

MarvinsDepression

Bekanntes Mitglied
Es ginge auch innerhalb der Rekusion. Z.B. dem Rekusionsstring bei jeder Zeichenverdopplung ein bestimmtes Character (welches ansonsten nicht vorkommen darf) anhängen.
Abbruchbedingung ist, wenn der String mit diesem Zeichen beginnt. Die Anzahl der Verdopplungen entspricht dann der Stringlänge.
Läuft der String leer, ohne dass dieses Zeichen auftritt, ist die Anzahl 0.
 

MarvinsDepression

Bekanntes Mitglied
Java:
    // Einschraenkung: '\0' darf im urspruenglichen String nicht enthalten sein!
    public static String doubleChar(String s, char c) {
        if (s.isEmpty() || s.charAt(0) == '\0') return ""+ s.length();
        
        if (s.charAt(0) == c) return ""+ c + c + doubleChar(s.substring(1) + '\0', c);
        
        return s.charAt(0) + doubleChar(s.substring(1), c);
    }
 

KonradN

Super-Moderator
Mitarbeiter
Mich würde die genaue Formulierung der Aufgabe interessieren. Oder geht es nur mir so, dass die Aufgabe wenig durchdacht scheint?

Die Lösungen sind halt alles andere als perfekt. Wer sagt, dass die Zeichenkette nicht eine Zahl am Ende hat? Und ein String könnte auch ein NUL beinhalten (wobei das schon deutlich unwahrscheinlicher ist)

Edit: Nicht aufgepasst, was die Autokorrektur angestellt hat bei "alles andere als"
 

KonradN

Super-Moderator
Mitarbeiter
Und der reguläre Ausdruck könnte Probleme haben weil das .* greedy sein dürfte und bei Zahlen mit mehr wie einer Ziffer diese "klauen" dürfte. Das müsste man einmal testen.
 

Oneixee5

Top Contributor
Java:
    // Einschraenkung: '\0' darf im urspruenglichen String nicht enthalten sein!
    public static String doubleChar(String s, char c) {
        if (s.isEmpty() || s.charAt(0) == '\0') return ""+ s.length();
       
        if (s.charAt(0) == c) return ""+ c + c + doubleChar(s.substring(1) + '\0', c);
       
        return s.charAt(0) + doubleChar(s.substring(1), c);
    }
clever!
 

KonradN

Super-Moderator
Mitarbeiter
Mindestens ein Zeichen darf im übergebenen String nicht vorkommen... Diese Einschränkung hat meine Regex Variante nicht.
Doch, deine Version hat eine ähnliche Einschränkung, denn am Ende des übergebenen Strings darf keine Zahl vorkommen.
Damit hast Du sichtbare Zeichen, die regelmäßig vorkommen in Texten während NUL in der Regel nicht vorkommt, da es einfach kein sichtbares Zeichen ist. Aber da es ein erlaubtes Zeichen ist, hat man rein theoretisch noch ein Problem.

Strings sind UTF-16 codiert. Man kann sich also anschauen, was denn bei UTF-16 alles gültig bzw. ungültig ist:
FAQ - UTF-8, UTF-16, UTF-32 & BOM (unicode.org)

Ein D800 - DBFF ist ungültig, wenn kein Zeichen aus dem Bereich DC00-DFFF folgt. Damit wäre D800 als Zeichen am Ende eine Möglichkeit. Und der Check wird erweitert ob nach dem D800 das String zu Ende ist oder ein D800 folgt.

Damit wäre diese Variante dann sicher, so man davon ausgeht, dass nur gültige Strings vorkommen. Man müsste es aber ausprobieren - nicht dass Java eine Validierung hat. Davon gehe ich aber erst einmal nicht aus. Es dürfte einfach eine Reihe an Codepoints sein.
 

mihe7

Top Contributor
Die genaue Aufgabenstellung wäre da schon mal interessant. In dem Zusammenhang natürlich auch die Methodensignatur und der Rückgabetyp. Mir ist aus dem Eingangspost noch nicht mal im Ansatz klar, was die Methode eigentlich genau machen soll: Zeichen sollen verdoppelt werden, dabei soll ein neuer String ausgegeben werden - dann soll aber irgendwas von ABC1111 nach ABC4 transformiert werden, weil zusätzlich die Zahl der Verdoppelungen angehängt werden soll. Das ist mir alles zu wirr.
 

KonradN

Super-Moderator
Mitarbeiter
Die genaue Aufgabenstellung wäre da schon mal interessant. In dem Zusammenhang natürlich auch die Methodensignatur und der Rückgabetyp. Mir ist aus dem Eingangspost noch nicht mal im Ansatz klar, was die Methode eigentlich genau machen soll: Zeichen sollen verdoppelt werden, dabei soll ein neuer String ausgegeben werden - dann soll aber irgendwas von ABC1111 nach ABC4 transformiert werden, weil zusätzlich die Zahl der Verdoppelungen angehängt werden soll. Das ist mir alles zu wirr.
Ja, ich war da auch etwas am rätseln. Ich vermute ja, dass er mit dem ABC1111 einfach nur meinte, dass er da halt 1er angefügt hat an die Zeichenkette (symbolisch einfach als ABC bezeichnet) und das mag er nicht. Statt dessen will er eine 4 statt eben den 4 einzelnen 1er.

Aber ich vermute auch, dass da noch ein Rückgabetyp sein dürfte. Und dann könnte man den evtl. verwenden. Aber selbst da wäre die Fragestellung noch: Wenn ich die Anzahl der Ersetzungen zurück gebe, dann habe ich das als Rückgabewert aber noch nicht ausgegeben.

Schon in #6 habe ich daher das alles hinterfragt - denn ich sehe nicht, was bei dem, was man hier dann unter dem Strich verstanden und als Lösung angeboten hat, lernen oder vertiefen soll. Daher ist es schade, dass die genaue Aufgabe nicht mitgeteilt wurde.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
til237 Iterative Methode in rekursive Methode umschreiben Java Basics - Anfänger-Themen 4
Csircc Rekursive Methode Stack Overflow Java Basics - Anfänger-Themen 10
C Rekursive Methode in Interative Methode umwandeln Java Basics - Anfänger-Themen 17
G Rekursive Methode mit 2 Aufrufen Java Basics - Anfänger-Themen 1
M Rekursive Java-Methode Java Basics - Anfänger-Themen 13
G Rekursive Methode liefert augenscheinlich keinen boolean-Wert zurück. Java Basics - Anfänger-Themen 4
macle Rekursive String Methode, Gerade Zahlen rausfiltern Java Basics - Anfänger-Themen 10
J Rekursive swapArray Methode Java Basics - Anfänger-Themen 69
D Rekursive Methode Java Basics - Anfänger-Themen 8
O Quersumme rekursive Methode Java Basics - Anfänger-Themen 3
M Rekursive Methode Programmieren Java Basics - Anfänger-Themen 3
J rekursive Methode Java Basics - Anfänger-Themen 26
J Rekursive Methode - Ziffern einer Zahl ausgeben Java Basics - Anfänger-Themen 2
S Rekursive Methode Java Basics - Anfänger-Themen 8
O Rekursive Methode Java Basics - Anfänger-Themen 4
V Methoden Rekursive Methode mit String als Rückgabe Java Basics - Anfänger-Themen 7
K Rekursive Methode Java Basics - Anfänger-Themen 1
K Rekursive Methode für Fakultät mit BigInteger Java Basics - Anfänger-Themen 10
L Rekursive Methode a * b berechnen Java Basics - Anfänger-Themen 2
L Rekursive Methode zur Berechnung der Potenz q hoch p Java Basics - Anfänger-Themen 17
J Methoden Rekursive Return Methode Java Basics - Anfänger-Themen 2
P Methoden Rekursive Methode für Potenzen Java Basics - Anfänger-Themen 2
S Int zu Hexadezimal - Rekursive Methode Java Basics - Anfänger-Themen 2
C rekursive methode Java Basics - Anfänger-Themen 2
R rekursive Methode funktioniert nicht Java Basics - Anfänger-Themen 4
R Rekursive Methode, Files finden Java Basics - Anfänger-Themen 2
C rekursive Methode verstehe nicht! Java Basics - Anfänger-Themen 3
S Methoden rekursive Methode funktioniert nicht Java Basics - Anfänger-Themen 4
E Rekursive Methode Java Basics - Anfänger-Themen 3
A Rekursive Methode in Iterative umwandeln Java Basics - Anfänger-Themen 6
C Rekursive Methode - Ziffern in Zahl Java Basics - Anfänger-Themen 33
G Rekursive Methode Java Basics - Anfänger-Themen 3
E Rekursive Methode mit Zufallsarray Java Basics - Anfänger-Themen 6
E Rekursive Methode Java Basics - Anfänger-Themen 18
M Rekursive Methode - wo ist der Fehler? Java Basics - Anfänger-Themen 4
J rekursive methode Java Basics - Anfänger-Themen 6
H ScrollBar inaktiv / Rekursive Methode Java Basics - Anfänger-Themen 4
J Rekursive Methode Java Basics - Anfänger-Themen 11
G Rekursive Methode Java Basics - Anfänger-Themen 5
J Rekursive Methode: Fakultaet berechnen Java Basics - Anfänger-Themen 5
G rekursive Methode Java Basics - Anfänger-Themen 3
G rekursive u iterative Methode Java Basics - Anfänger-Themen 8
G Rekursive Methode Java Basics - Anfänger-Themen 7
emreiu Methoden Rekursive Methoden Runter- & Hochzählen Java Basics - Anfänger-Themen 2
Viktor A. Kaiser Rekursive Algorithmen Java Basics - Anfänger-Themen 9
new_to_coding Rekursive Reihe implementieren Java Basics - Anfänger-Themen 1
J Rekursive Funktion und return statement Java Basics - Anfänger-Themen 3
S Rekursive Kombinationen Java Basics - Anfänger-Themen 6
P9cman Tipps für Rekursive Aufgaben mit Strings oder allgemein Java Basics - Anfänger-Themen 2
schredder Rekursive Quadratzahlen - Ergebnisprozedur Java Basics - Anfänger-Themen 1
A Rekursive Implementation eines Codes Java Basics - Anfänger-Themen 4
L Rekursive Methoden Java Basics - Anfänger-Themen 14
J Rekursive Folge (a=a-1) Java Basics - Anfänger-Themen 9
veryck Methoden Rekursive Methoden mit Rückgabeparameter Java Basics - Anfänger-Themen 9
M Rekursive Prüfung ob ein Array sortiert ist... Java Basics - Anfänger-Themen 4
R Methoden rekursive Methoden Java Basics - Anfänger-Themen 6
B Treetable (rekursive Funktion) aufbauen von Datenbank Java Basics - Anfänger-Themen 4
M rekursive division/0 mit exception Java Basics - Anfänger-Themen 18
MiMa Rekursive Dateiliste erstellen mit Dateiendung(en) ?? Java Basics - Anfänger-Themen 4
G Harmonische Rekursive Folge Java Basics - Anfänger-Themen 3
T Stack Overflow - Rekursive Fibonacci Java Basics - Anfänger-Themen 10
B Datentypen Suchbaum - Rekursive Ausgabe Java Basics - Anfänger-Themen 1
M Methoden Binäre Suche als rekursive Variante Java Basics - Anfänger-Themen 5
B Rekursive Algorithmus schreiben Java Basics - Anfänger-Themen 8
S Eine rekursive Lösung Java Basics - Anfänger-Themen 4
M Rekursive Suche in einem Feld Java Basics - Anfänger-Themen 11
N Rekursive Addition mit Scanner Java Basics - Anfänger-Themen 12
shiroX OOP Rekursive und Iterative Definition Java Basics - Anfänger-Themen 2
B Methoden Rekursive Methoden Java Basics - Anfänger-Themen 2
T Iterative Pi Berechnung in Rekursive Java Basics - Anfänger-Themen 2
D Methoden Rekursive Methoden Java Basics - Anfänger-Themen 13
M Stürzen alle Rekursive Methoden irgendwann ab? Java Basics - Anfänger-Themen 11
D Primzahlen und Rekursive Liste Java Basics - Anfänger-Themen 29
S rekursive folge verbessern Java Basics - Anfänger-Themen 2
N Methoden Rekursive Fibonaccizahlen mit Array Java Basics - Anfänger-Themen 2
R Rekursive Ausgabe eines Binärbaums Java Basics - Anfänger-Themen 4
J Methoden Rekursive Potenz ohne Math.Pow() Java Basics - Anfänger-Themen 9
S Labyrith Rekursive Wegsuche Java Basics - Anfänger-Themen 4
U Dezimal zu Hexadezimal rekursive Funktion Java Basics - Anfänger-Themen 8
M rekursive Funktion zur Berechnung der Spiegelzahl Java Basics - Anfänger-Themen 7
L iterative und rekursive Folge Java Basics - Anfänger-Themen 20
A rekursive Listen in Java? Java Basics - Anfänger-Themen 5
B OOP Einfach verkettete Liste - rekursive Methoden Java Basics - Anfänger-Themen 1
U Rekursive lösung von pascal dreieck Java Basics - Anfänger-Themen 11
N Rekursive Berechnung der Höhe eines binären Baumes Java Basics - Anfänger-Themen 4
K Rekursive Methoden Java Basics - Anfänger-Themen 15
K Rekursive Funktion (Verständnissfrage) Java Basics - Anfänger-Themen 5
S Rekursive Bruch potenzierung Java Basics - Anfänger-Themen 2
D rekursive Summenberechnung Java Basics - Anfänger-Themen 8
E Rekursive definierten Folge Java Basics - Anfänger-Themen 10
A HILFE! Rekursive Funktion Java Basics - Anfänger-Themen 20
kulturfenster rekursive Binaere Suche Java Basics - Anfänger-Themen 12
F Rekursive Aufrufe, Parameterübergabe, call by reference Java Basics - Anfänger-Themen 3
G Rekursive Berechnung von n über k schlägt fehl Java Basics - Anfänger-Themen 5
B Rekursive & schreiben im ArrayList Java Basics - Anfänger-Themen 2
J Rekursive Fkt. Java Basics - Anfänger-Themen 2
A Rekursive Dateisuche Java Basics - Anfänger-Themen 12
K rekursive Funktion mit mehreren Parametern Java Basics - Anfänger-Themen 5
N rekursive Beispiele Java Basics - Anfänger-Themen 3
ven000m Rekursive Funktionen - Frage Java Basics - Anfänger-Themen 16

Ähnliche Java Themen

Neue Themen


Oben