В вашем коде вы используете два разных имени метода, stringProgression
и stringExplosion
.
Кроме того, у вас есть while
l oop с точкой с запятой, while (index <= str.length());
, которая образует пустой л oop. Поскольку index
не изменяется в этом пустом l oop, оно будет бесконечным l oop, когда условие будет выполнено.
Как правило, while
l oop противоречит намерению чтобы иметь рекурсивное решение.
Чтобы найти рекурсивное решение проблемы, вы должны найти в ней самоподобие. Т.е. когда вы смотрите на ожидаемый результат для Book
, BBoBooBook
, вы можете распознать, что начало, BBoBoo
- это правильный результат для строки Boo
, а BBo
- правильный результат для Bo
, Таким образом, исходная строка должна быть добавлена к результату рекурсивного вычисления подстроки:
public static String stringProgression(String str) {
if(str.isEmpty()) {
return str;
}
return stringProgression(str.substring(0, str.length() - 1)) + str;
}
Альтернативный, более короткий синтаксис для этого:
public static String stringProgression(String str) {
return str.isEmpty()? str: stringProgression(str.substring(0, str.length() - 1)) + str;
}