У меня проблемы с пониманием этого кода. Часть, которая меня смущает, - это вывод, в частности, вывод 3 и 5. Как 3-й из них может быть истинным, а 5-й - ложным. Я понял подстроки так: " оперирует "значениями после индекса. Следовательно, здесь он по-прежнему выводит true для «This», хотя он должен иметь индекс 0, и false для «текста». Почему так?
public class test {
private static final String TEXT = "This is the text to be searched";
private static boolean hasSubstring(String toFind, String findFrom) {
if (findFrom.length() == 0) {
return false;
}
if (findFrom.startsWith(toFind)) {
return true;
}
return hasSubstring(toFind, findFrom.substring(1));
}
public static void main(String[] argv) {
System.out.println(hasSubstring("text to", TEXT));
System.out.println(hasSubstring("goo", TEXT));
System.out.println(hasSubstring("This", TEXT));
System.out.println(hasSubstring("searched", TEXT));
System.out.println(hasSubstring("the text", TEXT));
}
}