У меня проблемы с реализацией метода подстроки String рекурсивно - PullRequest
0 голосов
/ 21 марта 2020
public String substring(String s, int start, int stop){
    if(stop>s.length()||start>stop||start<0){
       throw new IllegalArgumentException("");
    }
    if(start==stop){
        return "";
    }else{
        return ""+s.charAt(start)+substring(s, start++, stop);
    }
}

Я получаю переполнение стека и не знаю, как это исправить

1 Ответ

1 голос
/ 21 марта 2020

Это потому, что start++ сначала возвращает start значение и , а затем увеличивает значение start (это означает, что вы в основном вызываете рекурсивную функцию substring с всегда одинаковыми параметрами start значение) - вам нужно изменить это на ++start

return ""+s.charAt(start)+substring(s, ++start, stop); // or even better 'start + 1' because you don't need to increment this locally
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...