在 For 循环内执行递归

moh*_*abu 5 java string recursion loops permutation

我试图理解为给定输入字符串编写排列的代码。

例如:输入字符串:123,输出:123,132,213,231,312,321。

下面粘贴的代码片段就是这样做的。

 public static void main(String args[]) {

    permuteString("", "123");
   }

public static void permuteString(String beginningString, String endingString) {
    if (endingString.length() <= 1)
        System.out.println(beginningString + endingString);
    else
        for (int i = 0; i < endingString.length(); i++) {
            try {
                 // System.out.println(i);
                String newString = endingString.substring(0, i) + endingString.substring(i + 1);
                permuteString(beginningString + endingString.charAt(i), newString);
            } catch (StringIndexOutOfBoundsException exception) {
                exception.printStackTrace();
            }
        }
Run Code Online (Sandbox Code Playgroud)

我对'i'for 循环中整数何时递增感到非常困惑,即从i=0 to 1. 我从第一次迭代中理解的一件事来看,'i'当它达到基本情况时,它会递增到 1

   if (endingString.length() <= 1)
        System.out.println(beginningString + endingString);
Run Code Online (Sandbox Code Playgroud)

我尝试进一步调试,我的值在连续迭代中不断在 0 和 1 之间变化,这是我无法理解的。

总而言之,我对 "for loop"第一次迭代后 try 块中的两条指令之间的关系感到困惑。

如果有人可以指导我完成整个过程,我会很高兴。

kar*_*sen 3

我尝试用图来尽可能详细地说明,希望对您有所帮助。这个递归不需要try-catch块,你可以删除它,它会正常工作

在此输入图像描述