方法递归和排列

时间:2013-03-25 23:50:00

标签: java recursion

我正在尝试理解下面编写的代码。我可以跟上它。我想我理解第一个结果是如何实现的,但不确定其余的结果。以下是代码和我的解释。

代码:

public static void main(String [] args)
{
    String str ="abc";
    permuatation(str,"");
}

private static void permuatation(String str, String current) {
    if(str.equals(""))
    {
        System.out.printf("Result: %s",current);
        System.out.println();
    }
    else
    {
        for (int i = 0; i < str.length(); i++)
        {
            char c= str.charAt(i);
            permuatation(str.substring(0, i)+ str.substring(i+1), current + c);

        }
    }

我对字符串的解释,例如abc;

1.for i = 0;我&lt;比字符串长度;增量我

2.at index i转换为字符(a);

3.run置换方法使用子串的参数(剩余字符-bc)和(当前字符a);

4.现在使用字符串bc

5.for i = 0;我&lt;比字符串长度;增量我

6.at index i转换为字符(b);

7.run置换方法使用子串的参数(剩余字符-c)和(当前字符ab);

8.for i = 0;我&lt;比字符串长度;增量我

9.at index i转换为字符(b);

10.run置换方法使用substring参数(其余字符 - )和(当前字符abc);

11 as string =“”打印当前字符abc

其他排列如何实现?任何指导都将非常感谢。

0 个答案:

没有答案