Pour une affectation, je suis censé trouver le mot le plus long dans une phrase en utilisant la récursivité. J'ai écrit une méthode qui prend les deux premiers mots de la phrase, les compare, puis prend le plus long des deux et compare cela au mot suivant dans le reste de la phrase. Ma logique vérifie, mais la méthode ne fonctionne pas correctement. Je pense qu'il y a un coup de chance qui prend des espaces, et c'est pourquoi cela ne fonctionne pas.Utilisation de la récursion pour trouver le mot le plus long dans une phrase (Java)
public static String longestWord(String sentence)
{
if (sentence.indexOf(' ') == -1) { // IF sentence only has one word
return sentence;
}
String word1 =(sentence.indexOf(" ") != -1)? sentence.substring(0, sentence.indexOf(" ")):
sentence.substring(0);
String temp = sentence.substring(sentence.indexOf(" ")+1);
String word2 = null;
String rest = null;
if (sentence.indexOf(" ") != -1) {
word2 = (temp.indexOf(" ") != -1)? temp.substring(0, temp.indexOf(" ")+1):
temp.substring(0);
rest = temp.substring(temp.indexOf(" ")+1);
}
if (word1.length() > word2.length()) {
return longestWord(word1 + rest);
}
if (word2.length() > word1.length()) {
return longestWord(word2 + rest);
}
return sentence;
}
Vous invoquez 'indexOf (» «)' et 'indexOf (» «)'; Est-ce intentionnel? Si le premier test réussit, dans quelles circonstances le second test pourrait-il échouer? –
Quand vous dites "ne fonctionne pas correctement", que voulez-vous dire? Fournir des exemples d'entrées/sorties serait peut-être utile. – Jeff
@Jeff Entrée: Le mot le plus long est melon d'eau; Sortie: watermelonwatermelon – biohax2015