0
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"인 경우 코드에서이 문자열의 길이가 감소하여 결국 기본 사례에 도달하게됩니까? 나는 그것이 항상 "abc"인 것처럼 우리가 rem을 내버려두고있는 것을 안다. .. 내가 무엇을 놓치고 있냐?자바 - 아무도 나를 위해이 순열 코드를 설명 할 수 있습니까?
'perm'은'rem'을 첫 번째 인수로 사용하여 재귀 호출됩니다. 여기서'rem'은'str'보다 1 문자 짧습니다. – Thomas
머리카락을 파마에 넣습니다. 최소한 그것이 인터페이스가 제안하는 것입니다. – byxor