递归地从数组中获取所有可能的排列

时间:2014-07-16 23:23:14

标签: c# loops recursion

我有一个char数组:

static char[] numbers = {'0','1','2','3','4','5','6','7','8','9'};

我需要制作一个功能,将它们组合在最多3位数字的所有可能组合中。像这样:

0
1
2
3
00
01
02
03
10
11
12
13
20
21
22
23
30
31
32
33
000
001
002
003
010
011

就像那样,但是有了所有可能的组合。 到目前为止,我已经使用 for 循环 if ,但我发现使用递归函数更好 最好和最快的方法是什么?

1 个答案:

答案 0 :(得分:0)

嗯,这是我提出的代码。

    static char[] numbers = {'0','1','2','3','4','5','6','7','8','9'};
    static bool continuar = true;

    private static void Start(int maxLength)
    {
        for (int i = 0; i <= maxLength; i++)
            Permutations(i, 0, "");
    }

    private static void Permutations(int keyLength, int position, string baseString)
    {
        bool print = true;
        if (continuar)
        {
            for (int i = 0; i < numbers .Length; i++)
            {
                string temp = baseString + numbers [i];
                if (position <= keyLength - 1)
                {
                    Permutations(keyLength, position + 1, temp);
                    print = false;
                }
                if (continuar && print)
                    Console.WriteLine(temp);
            }
        }
    }