meine aktuellen Code den Ausgang zurück:Rekursion zu prüfen, ob ein String eine andere Zeichenfolge entspricht
true
Expected: true
false
Expected: true
false
Expected: true
false
Expected: false
false
Expected: false
Also gibt es ein Problem mit meiner Logik, die ich nicht
public static void main(String[] args)
{
System.out.println(find("",""));
System.out.println("Expected: true\n");
System.out.println(find("Mitten","Mit"));
System.out.println("Expected: true\n");
System.out.println(find("I love my CS courses!"," CS"));
System.out.println("Expected: true\n");
System.out.println(find("","Cookies."));
System.out.println("Expected: false\n");
System.out.println(find("Java","Python"));
System.out.println("Expected: false\n");
}
public static boolean find(String text, String str)
{
boolean found = false;
if(text.length() == 0 && str.length() == 0)
{
found = true;
return found;
}
if(text.length() == 0 || str.length() == 0)
{
return found;
}
if(str.length() > text.length())
{
return found;
}
if(str.equals(text.substring(0,str.length()-1)))
{
found = true;
}
else
{
text = text.substring(1);
find(text, str);
}
return found;
}
bitte helfen
bin zu sehen
Sie definieren 'gefunden' bei jedem Rekursionsaufruf. – Maroun
Ihr Titel sagt * "wenn eine Zeichenkette ** einer anderen Zeichenkette" * entspricht, aber Ihr Code sagt, dass Sie 'true' erwarten, wenn Sie' Mitten' und 'Mit' vergleichen, und sie sind definitiv ** nicht ** gleich. Also, was willst du wirklich von der Methode? – Andreas
Sie sollten die gefundene Variable loswerden. Geben Sie einfach 'true' oder' false' direkt zurück, oder den Wert aus dem rekursiven Aufruf, den Sie im Moment ** nicht ** gerade machen. – Andreas