public static int getIndexOf(char ch, String str) {
if (str == null || str.equals("")) {
return 0;
//base case
}else{
char first = str.charAt(0);
if (ch != first) {
return -1;
//returns -1 when the character cannot be found within the string
}else{
int rest = str.length() - 1;
if (str.charAt(rest) == ch) {
return rest;
}
return lastIndexOf(ch, str.substring(0, rest));
//recursive case
}
}
}
Этот мой метод возвращает индекс входного символа входной строки. Однако, когда я запускаю его в плоскости взаимодействия, он возвращает неправильное число. Например, когда я вхожу в «a» и «персик», он должен возвращать 2, но он возвращает -1. Этот метод должен возвращать -1 только тогда, когда символ не может быть найден в строке. Может ли кто-нибудь сказать мне, как с этим бороться? Спасибо!Неправильный вывод рекурсивного метода
Прежде всего, почему вы не используете string.indexOf (char); ?? – jsedano
Если вам нужен индекс 'a' в' персике', вы перейдете в блок 'else' (потому что' персик' не 'null' и не равен' '' '). Там первый символ ('p') сравнивается с' a', которые не равны. Поэтому условие 'if' является' true', и ваш метод вернет '-1'. – jlordo
Во-вторых, вы получаете -1 вместо двух ... вы выполняете этот метод, и если возвращается -1, когда ch! = First – jsedano