Перестановки с повторами, алгоритм с рекурсией ⇐ C#
Перестановки с повторами, алгоритм с рекурсией
У меня возникли проблемы с тем, чтобы заставить это работать с использованием одной функции вместо использования многих.
Если я хочу получить перестановки с повторами типа 2^3. перестановки с повторами
чтобы получить:
000 001 101 011 100 101 110 111 Я могу использовать эту функцию:
static void Main(string[] args) { три_перестановки (2); Консоль.ReadLine(); } статическая пустота Three_permutations (int y) { for (int aa = 0; aa < y; aa++) { for (int bb = 0; bb < y; bb++) { для (int cc = 0; cc < y; cc++) { Console.Write((аа)); Console.Write((bb)); Console.Write((cc)); Консоль.WriteLine(); } } } } Но тогда, чтобы сделать 4 (например, 2^4), я могу придумать единственный способ:
static void four_permutations(int y) { for (int aa = 0; aa < y; aa++) { for (int bb = 0; bb < y; bb++) { для (int cc = 0; cc < y; cc++) { for (int dd = 0; dd < y; dd++) { Console.Write((аа)); Console.Write((bb)); Console.Write((cc)); Console.Write((дд)); Консоль.WriteLine(); } } } } } но я уверен, что есть лучший способ использования рекурсии, я просто не знаю, как это сделать. Я ценю любую помощь. Спасибо.
У меня возникли проблемы с тем, чтобы заставить это работать с использованием одной функции вместо использования многих.
Если я хочу получить перестановки с повторами типа 2^3. перестановки с повторами
чтобы получить:
000 001 101 011 100 101 110 111 Я могу использовать эту функцию:
static void Main(string[] args) { три_перестановки (2); Консоль.ReadLine(); } статическая пустота Three_permutations (int y) { for (int aa = 0; aa < y; aa++) { for (int bb = 0; bb < y; bb++) { для (int cc = 0; cc < y; cc++) { Console.Write((аа)); Console.Write((bb)); Console.Write((cc)); Консоль.WriteLine(); } } } } Но тогда, чтобы сделать 4 (например, 2^4), я могу придумать единственный способ:
static void four_permutations(int y) { for (int aa = 0; aa < y; aa++) { for (int bb = 0; bb < y; bb++) { для (int cc = 0; cc < y; cc++) { for (int dd = 0; dd < y; dd++) { Console.Write((аа)); Console.Write((bb)); Console.Write((cc)); Console.Write((дд)); Консоль.WriteLine(); } } } } } но я уверен, что есть лучший способ использования рекурсии, я просто не знаю, как это сделать. Я ценю любую помощь. Спасибо.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение