如果求1 2 3 这个数组的全排列,如果我们不用递归,就会造成使用多个循环结构,这样造成了代码极大的冗余。
来看代码
第一种方法
void PrintArray(int Array[],int n)
{
for (int i = 0; i < n; ++i)
{
cout << Array[i] << " ";
}
cout << endl;
}
void Swap(int arr[], int left, int right)
{
int temp = arr[left];
arr[left] = arr[right];
arr[right] = temp;
}
void Permution(int arr[], int p, int q)
{
if (p == q)
{
PrintArray(arr, p+1);
}
else
{
for (int i = p; i <= q; ++i)
{
Swap(arr, p, i);
Permution(arr, p + 1, q);
Swap(arr, i, p);
}
}
}