Я пишу логическую функцию проверки палиндрома на Java - я изучаю рекурсию. Когда слово разделяется на последнюю (внутреннюю) одну или две буквы, и программа должна проверить, совпадают ли эти две буквы, кажется, что это не работает - функция всегда возвращает false. Кажется странным, что когда программа возвращается, она просто продолжает работать - я знаю это, потому что она продолжает печатать мои контрольные точки (операторы печати). Функция печати выполняется, но следующий за ней оператор return игнорируется. И даже когда функция должна вернуть истину (= слово является палиндромом), в конце она все равно возвращает ложь.
Я уже пробовал комбинации операторов if, if-else, различных положений операторов return, функция isPalindrome правильно работает с основной функцией, и я пробовал много отладки с функциями печати.
Мой код:
public static boolean isPalindrome(String word) {
int wlength = word.length();
System.out.printf("wlength = %d%n", wlength);
if (wlength == 1) {
System.out.printf("wlength == 1!!!!%n");
return true;
} else if (wlength == 2) {
System.out.printf("wlength == 2%n");
String first = word.substring(0, 1);
String last = word.substring(1, 2);
if (first == last) {
return true;
} else {
return false;
}
}
String first = word.substring(0, 1);
String last = word.substring(wlength-1, wlength);
System.out.printf("first = %s, last = %s %n", first, last);
if (first.compareTo(last) == 0) {
System.out.printf("first == last%n");
String inner= word.substring(1, wlength-1);
System.out.printf("new Word = %s RECURSION%n", inner);
isPalindrome(inner);
}
System.out.println("END");
return false;
}
Спасибо!
if (prva.compareTo(last) == 0) {
System.out.printf("first == last%n");
String inner= word.substring(1, wlength-1);
System.out.printf("new Word = %s RECURSION%n", inner);
isPalindrome(inner); // <--- here
}
Вы не записали возвращаемое значение в последней строке, показанной выше.
prva
не определено. Scott Hunter==
а не сequals()
илиequalsIgnoreCase()
JustAnotherDeveloperisPalindrome(inner);
->return isPalindrome(inner);
VLAZ