Рекурсивен алгоритъм за изчисление на комбинации

Това е превод на C# от Recursive Combination Algorithm
 


using System;

namespace Tascs
{
    class MainClass
    {
        static void comb(int n, int r, int[] arr, int sz) {
            for (int i = n; i >= r; i --) {
                // choose the first element
                arr[r - 1] = i;
                if (r > 1) { // if still needs to choose
                    // recursive into smaller problem
                    comb(i - 1, r - 1, arr, sz);
                } else {
                    // print out one solution
                    for (int ii = 0; ii < sz; ii ++) {
                        Console.Write (arr[ii]);
                        Console.Write (" ");
                    }
                    Console.WriteLine ();
                }
            }
        }

        public static void Main (string[] args)
        {
            Console.WriteLine ("Input number:");
            int N = Int32.Parse(Console.ReadLine ());
            Console.WriteLine (N);
            int K = 2;

            int[] arr = new int[K];
            comb(N, K, arr, K);
        }
    }
}