我写了一个算法来解决字符串排列算法。它有问题,某处打印错误的输出。我已经针对不同的输入多次浏览了我的代码,但我无法找到我犯了什么错误。
有人会解释我在哪里犯了错误吗?
public static void main(String args[]) throws Exception {
String str1 = "eat";
int len = str1.length();
char[] str = str1.toCharArray();
recurPerm(str,0,len);
}
static void recurPerm(char[] str, int strstartind, int sz) {
for(int i = strstartind; i < sz; i++){
if(i > strstartind) {
char temp = str[strstartind];
str[strstartind] = str[i];
str[i] = temp;
recurPerm(str, strstartind + 1, sz);
}
else {
recurPerm(str, strstartind + 1, sz);
}
}
if(strstartind >= sz){
System.out.println(str);
}
return;
}
输出
eat
eta
tea
tae
eat
eta
但正确的输出是
吃 eta aet 吃 tae 茶
我也试过调试。我发现调试太难了,因为涉及到递归。
哔哔one
相关分类