namespace CombinationRecursion
public static void Main()
Console.Write("Input String>");
string inputLine = "abc";
Recursion rec = new Recursion();
rec.InputSet = rec.MakeCharArray(inputLine);
Console.Write("# of Permutations: " + rec.PermutationCount);
private int elementLevel = -1;
private int numberOfElements;
private int[] permutationValue = new int[0];
set { inputSet = value; }
private int permutationCount = 0;
public int PermutationCount
get { return permutationCount; }
set { permutationCount = value; }
public char[] MakeCharArray(string InputString)
char[] charString = InputString.ToCharArray();
Array.Resize(ref permutationValue, charString.Length);
numberOfElements = charString.Length;
public void CalcPermutation(int k)
permutationValue.SetValue(elementLevel, k);
if (elementLevel == numberOfElements)
OutputPermutation(permutationValue);
for (int i = 0; i < numberOfElements; i++)
if (permutationValue[i] == 0)
permutationValue.SetValue(0, k);
private void OutputPermutation(int[] value)
Console.Write(inputSet.GetValue(i - 1));