【发布时间】:2017-02-01 15:55:02
【问题描述】:
public static void perm(String str) {
perm1(str,"");
}
private static void perm1(String str, String prefix) {
int n = str.length();
if (n == 0) StdOut.println(prefix);
else {
for (int i = 0; i < n; i++){
String rem = str.substring(0,i) + str.substring(i+1);
perm1(rem, prefix + str.charAt(i));
}
}
}
例如,如果我们的情况是“abc”.. 在代码中,这个字符串的长度是在哪里减少以便我们最终达到基本情况?我看到我们总是让 rem 因为它是“abc”..我错过了什么?
【问题讨论】:
-
perm1以rem作为第一个参数被递归调用,其中rem比str短一个字符。 -
它可以烫发你的头发。至少这是界面所暗示的。
标签: java recursion permutation