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'

作者没有提供任何解释,没有注释,整个递归非常混乱