全排列比较常见的用于暴力破解,以下是常见的递归算法:
Length的值确定全排列的个数
1、判断数组长度是否达到Length的值,如果达到则结束,如果没达到做步骤2。
2、向数组添从小到大(不超过Length)添加一个数(添加前检查该数是否已经添加)。
3、调用步骤1(递归调用)。
class Program { private static readonly int Lengh = 3; static void Main(string[] args) { List<int> a = new List<int>(); fun(a); } public static void fun(List<int> a) { if (a.Count == Lengh) { for (int i = 0; i < a.Count; i++) { Console.Write(a[i] + " "); } Console.WriteLine(); } else { for (int i = 1; i <= Lengh; i++) { if (CheckAdd(i, a)) { a.Add(i); fun(a); a.RemoveAt(a.Count - 1); } } } } private static bool CheckAdd(int i, List<int> a) { for (int k = 0; k < a.Count; k++) { if (a[k] == i) { return false; } } return true; } }