Aber das wäre doch dann nicht rekursiv, oder?Am einfachsten mit einer klassischen for-Schleife. Zuerst vergleichen ob die Arrays gleich lang sind, und wenn ja dann mit der Schleife ein Element nach dem anderen in den Arrays vergleichen.
function compare(..., int index) {
// TODO Comparison and checks here.
compare(..., ++index);
}
public static boolean P(char[] x, char[] y,int i) {Das ist richtig...ich sollte bei Gelegenheit lesen lernen, Verzeihung.
In dem Fall imitierst du eine for-Schleife, in dem du einfach den zu vergleichenden Index an die Funktion uebergibst, diese Funktion ruft dann natuerlich wieder sich selbst auf mit einem hochgezaehlten Index. Also als Pseudo-Code:
Code:function compare(..., int index) { // TODO Comparison and checks here. compare(..., ++index); }
[i]
als "kursiv" interpretiert.Das erinnert mich an fogenden Thread (von heute):
Rekursiver Vergleich von Textmuster und Text
Bitte um Hilfe: Man soll überprüfen ob ein Textmuster und ein Text zusammenpasst. Im Textmuster steht der Stern * als Platzhaltersymbol für eine beliebige Anzahl beliebiger Zeichen. Beispiele: Textmuster "abc" und Text "abc" passen zusammen. Textmuster "*" und Text "" passen zusammen...www.java-forum.org
Und bitte schreibe in diesem Forum deinen Code in Code-Tags - sonst wird[i]
als "kursiv" interpretiert.
public static boolean M(int pPos, int sPos) {
if(pArray[pPos]=='a'){
if(sArray[sPos]=='a')
M(pPos+1,sPos+1);
}
else if(pArray[pPos]=='b'){
if(sArray[sPos]=='b')
M(pPos+1,sPos+1);
}
else if(pArray[pPos]=='c'){
if(sArray[sPos]=='c')
M(pPos+1,sPos+1);
}
else if(pArray[pPos]=='*'){
for (int i = 0; i < sArray.length; i++){
if(M(pPos+1,i)==true)
return true;
}
}
return false;
}
public static boolean isMatching(String pattern, String string) {
pArray = (pattern).toCharArray();
sArray = (string).toCharArray();
int pPos=0;
int sPos=0;
return M(pPos,sPos);
}
if(pArray[pPos]=='a'){
if(sArray[sPos]=='a')
M(pPos+1,sPos+1);
}
if(pArray[pPos]=='a'){
if(sArray[sPos]=='a')
return M(pPos+1,sPos+1);
}
if(pArray[pPos]=='a'){
if(sArray[sPos]=='a')
return M(pPos+1,sPos+1);
} else {
return false;
}
}
if(pArray[pPos]=='*')
vorziehen; dann kannstdu dir die anderen if
s sparen (außer der Überprüfung auf ".").Wenn du erst den Stern (und den Punkt (als Endezeichen)) überprüfst, brauchst du nacher nicht mehr zu testen, ob es sich um einen Buchstaben handelt.Das is doch derselbe Code oder, also mit if(...==‘a‘), oder?
Nun nimm dir etwas Zeit, um das Programm zu schreiben.Bei mir kommt als Fehler ständig Index 0 out of Bounds for length 0. Weißt du was da das Problem ist?
Alles klar, mach ich! Vielen Dank für die HilfeNun nimm dir etwas Zeit, um das Programm zu schreiben.
Bevor du wieder nachfragst, solltest du dich erst einmal selber darum kümmern, den Fehler zu suchen!