c#写的阶乘算法,已验证7!=5040、6!=720跑过了没问题。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication5
{
class Program
{
public static int[] Nums;
static int countnum = 0;
static void Main(string[] args)
{
Nums = new int[] { 1, 2, 3,4,5,6,7};//这里可以放你的变量例如Nums = new int[] { a, b, c, d, e };赋值前确保变量有值。
countnum = 0;
Permutation(Nums, 0, Nums.Length);
Console.Write("总数:"+countnum/Nums.Length);
Console.ReadLine();
Console.ReadKey();
}
/// <summary>
/// 递归实现全排序并输出
/// </summary>
/// <param name="nums">待排序的字符数组</param>
/// <param name="m">输出字符数组的起始位置</param>
/// <param name="n">输出字符数组的长度</param>
public static void Permutation(int[] nums, int m, int n)
{
int i, t;
if (m < n - 1)
{
Permutation(nums, m + 1, n);
for (i = m + 1; i < n; i++)
{
t = nums[m];
nums[m] = nums[i];
nums[i] = t;
//
Permutation(nums, m + 1, n);
//
t = nums[m];
nums[m] = nums[i];
nums[i] = t;
}
}
else
{
for (int j = 0; j < nums.Length; j++)
{
countnum++;
Console.Write(nums[j]);
}
Console.WriteLine();
}
}
}
}