2016-03-21 20 views
0

Also ich ein Programm zu machen, versuche, die ein Wort in einem String findet, oder im Grunde ein Wort innerhalb eines Wortes. Mein Denkprozess besteht darin, zu überprüfen, ob jeder Teilstring mit dem Wort übereinstimmt, und Rekursion zu verwenden, um den String um jeweils ein Zeichen zu reduzieren. Ich habe viel Zeit darauf verbracht, aber es funktioniert nicht und ich verstehe wirklich nicht warum. Bitte helfen Sie mir, ich war wirklich schon eine Weile frustriert.Warum funktioniert der Rekursionscode nicht richtig? [Geschlossen!]

public static boolean yodo(String sen, String word) 
{ 
    String sentence = sen; 
    String wordy = word; 
    int wordLength = word.length(); 
    int senLength = sentence.length(); 

    boolean result = false; 

    if ((sentence.substring(0, wordLength)).equals(wordy)) 
    { 
     result = true; 
    } 
    else 
    { 

    yodo(sentence.substring(1), wordy); 
    } 

    return result; 


} 
+3

Das Ergebnis 'Yodo (sentence.substring (1), wortreich);' ignoriert. –

+0

'return same.contains (word);' –

+0

Warum sollten Sie der Variablen Parameter zuweisen, es sei denn, Sie möchten sie ändern? --- Wofür wird senLength verwendet? --- '(sentence_string (0, wordLength)). equals (wordy)' ist das gleiche wie 'sentence.startsWith (wordy)', was kürzer und viel klarer ist, was es tut. --- Und wie andere gesagt haben, sollten Sie den Rückgabewert des rekursiven Aufrufs verwenden. – Andreas

Antwort

0

Zuerst return false, wenn eine Länge 0 ist

Zweitens müssen Sie den Wert von yodo zurückzukehren, nicht einfach es nennen.

Rückgabe yodo (SatzString (1), wortreich);

geben, dass ein Versuch.

+0

Vielen Dank das hat so viel geholfen !! –

1

Der Grund, Ihr Code nicht richtig funktioniert, ist, dass Sie das Ergebnis des rekursiven Aufrufs ignorieren:

yodo(sentence.substring(1), wordy); 

Entweder es result vor der Rückkehr zuweisen soll, oder sofort zurückkehren, und die Erklärung fallen von result insgesamt.

Zusätzlich benötigen Sie einen Basisfallfalse zurückzukehren, wenn wordy länger als sentence. Andernfalls stürzt Ihr Code ab, wenn sentence leer wird String.

+0

vielen Dank !! Das war sehr hilfreich! –

Verwandte Themen