我正在用Java编写一个Android应用程序函数,该函数使用a 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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
你可以看到我已经对这个问题采取了递归方法,我相信这最终会填充字符串生成器,其中包含输入字符串的所有可能排列,每个排列后跟换行字符.
有没有人知道可能导致堆栈溢出的原因?