Java CTCI示例12大O-此递归的实际流程是什么?
代码:Java CTCI示例12大O-此递归的实际流程是什么?,java,recursion,Java,Recursion,代码: public class ctci { public static void main(String[] str){ permutation("abc",""); static void permutation(String str, String prefix) { if (str.length() == 0) { Syst
public class ctci {
public static void main(String[] str){
permutation("abc","");
static void permutation(String str, String prefix) {
if (str.length() == 0) {
System.out.println(prefix);
} else {
for (int i = 0; i < str.length(); i++) {
String rem = str.substring(0, i) + str.substring(i + 1);
permutation(rem, prefix + str.charAt(i));
}
}
}
}
公共类ctci{
公共静态void main(字符串[]str){
排列(“abc”和“);
静态空置换(字符串str、字符串前缀){
如果(str.length()==0){
System.out.println(前缀);
}否则{
对于(int i=0;i
问题:
public class ctci {
public static void main(String[] str){
permutation("abc","");
static void permutation(String str, String prefix) {
if (str.length() == 0) {
System.out.println(prefix);
} else {
for (int i = 0; i < str.length(); i++) {
String rem = str.substring(0, i) + str.substring(i + 1);
permutation(rem, prefix + str.charAt(i));
}
}
}
}
我不明白这个递归是如何工作的
我试过什么:
public class ctci {
public static void main(String[] str){
permutation("abc","");
static void permutation(String str, String prefix) {
if (str.length() == 0) {
System.out.println(prefix);
} else {
for (int i = 0; i < str.length(); i++) {
String rem = str.substring(0, i) + str.substring(i + 1);
permutation(rem, prefix + str.charAt(i));
}
}
}
}
在Intellij中放置断点,我得到了第一个“前缀”被打印到控制台“abc”的位置。在这个阶段,提供给函数的str是“”(空字符串),但迭代继续使用str='bc'
作者没有提供任何解释,没有注释,整个递归非常混乱