Ist diese Klausuraufgabe (Java/Rekursion) lösbar?

... komplette Frage anzeigen

2 Antworten

wenn a und b im jeweils ersten Zeichen NICHT übereinstimmen dann kann b zwar immer noch in a als Teilstring auftauchen - aber nicht an Position 0 von a ...

entsprechend reicht es in dem Falle (in dem die jeweils ersten Zeichen in beiden Strings nicht identisch sind) aus den "Rest" von a (ohne das erste Zeichen) nach b zu durchsuchen....

Der Code erscheint mir daher durchaus richtig (natürlich dann ohne das letzte return false das ja unerreichbar ist)

Da a dabei jedesmal um ein Zeichen kürzer wird ist auch sichergestellt, dass die Rekursion in dem Fall endet.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von crizeo
07.04.2016, 18:27

Allerdings wären dann Lücken erlaubt.

substring("Haus", "Hs") liefert true, da er durch die Rekursion beim Zeichen s wieder erst a prüft, dann u und dann s.

Die Aufgabe ist demnach nicht lösbar, oder?

0
Kommentar von crizeo
07.04.2016, 18:53

Eine zweite Methode wäre nicht verboten, aber die Methode containsRec muss eben rekursiv sein. Ich hatte auch schon so überlegt, allerdings wäre dann die "Untermethode" rekursiv, nicht aber containsRec(), oder was meinst du?

0
Kommentar von crizeo
07.04.2016, 20:18

Schaut interessant aus, werds nachher mal ausprobieren.

0

Hallo!

Was du in deinem  Kommentar

 // Ansonsten sind aber keine Lücken erlaubt, also:
return false;

// Die Unterscheidung der beiden Fälle ist bei Rekursion
// aber nicht möglich, daher würde ich sagen, dass die
// Aufgabe nicht lösbar ist.

schreibst, ist nicht verlangt.

Gruß

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von crizeo
07.04.2016, 18:30

Erstmal danke für die Antwort, aber:

"Die Methode soll true zurückgeben, falls String b leer oder in String a enthalten ist, sonst
false."

Dadurch ist das sehr wohl verlangt, da sonst substring("Wort", "ot") zu true auswertet, obwohl "ot" nicht als Substring in "Wort" enthalten ist.

Vor dieser Aufgabe kam dieselbe Aufgabe iterativ dran. Was zu tun ist, ist klar. Man soll die subtring-Methode der Klasse String eigenständig implementieren. Rekursiv ist das aber eben genau aus dem Grund doch gar nicht möglich, oder?

0

Was möchtest Du wissen?