Рекурсивный реверс строки с добавление в 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();
}
→ Ссылка