Я пишу функцию на Java для приложения Android, которая использует StringBuilder
для генерации всех перестановок строки.
Всякий раз, когда функция запускается, программа мгновенно завершается, и DDMS (инструмент отладки виртуальной машины Dalvic) заявляет о переполнении стека в моей функции.
private void reorder(String reorder_this, StringBuilder in_this){
for(int i = 0; i < reorder_this.length(); i++)
{
if(i == reorder_this.length())
{
in_this.append(System.getProperty("line.separator"));
}
else
{
in_this.append(reorder_this.charAt(i));
reorder(reorder_this.substring(0, i) + reorder_this.substring(i), in_this);
}
}
}
Вы можете видеть, что я принял рекурсивный подход к этой проблеме, которая, как я полагаю, закончит заполнением строителя строк всеми возможными перестановками введенной строки, за которой следует символ новой строки.
Кто-нибудь имеет представление о том, что может быть причиной переполнения стека?