Рекурсивный реверс строки с добавление в StringBuilder
Понимаю как работает мой метод "Рекурсивный реверс строки", но не понимаю почему когда я вместо этой строки stringBuilder.append(reMethod(str.substring(0, str.length()-1))); напишу reMethod(str.substring(0, str.length()-1));, StringBuilder перестает добавлять строки из предыдущего метода в мой StringBuilder, объясните, пожалуйста, как срабатывает StringBuilder или String в рекурсивный методах?
private String reMethod(String str){
StringBuilder stringBuilder = new StringBuilder();
if(str.length() == 1){
stringBuilder.append(str);
return stringBuilder.toString();
}
stringBuilder.append(reMethod(str.substring(0, str.length()-1)));
stringBuilder.insert(0,str.charAt(str.length()-1));
return stringBuilder.toString();
}
Ответы (1 шт):
Автор решения: NpB
→ Ссылка
Вероятно проблема в том, что на каждый вызов метода у вас создается новый StringBuilder, попробуйте создавать StringBuilder вне метода и передавать его в качестве параметра, например
private String reMethod(String str, StringBuilder stringBuilder) {
if(str.length() == 1){
stringBuilder.append(str);
return stringBuilder.toString();
}
reMethod(str.substring(0, str.length()-1), stringBuilder);
stringBuilder.insert(0,str.charAt(str.length()-1));
return stringBuilder.toString();
}