Я пытаюсь написать программу, которая показывает все возможные комбинации команд с символами A, B, C ... и так далее.Выбор команды с использованием рекурсии
Входной сигнал: (5,3)
5 является размер группы и 3 является размер команды.
выбора 3 из {А, В, С, D, Е}
Ожидаемые результаты: ABC, ABD, ABE, ACD, ACE, АДЭ, BCD, до н.э., BDE, CDE
Ниже приведен код, который я написал до сих пор.
public class teamApp
{
public static void main(String[] args) {
int groupSize =5;
int teamSize = 3;
char start = 'A';
String sequence = "";
showTeam(sequence,start,groupSize,teamSize);
}
public static void showTeam(String sequence,char start, int n, int k)
{
if(n==0||k==0||k>n) {
System.out.println(sequence);
return;
} else {
showTeam(sequence+start,start++,n-1,k-1);
showTeam(sequence,start++,n-1,k);
}
}
}
Я попытался использовать теорему (n,k) = (n-1,k-1)+(n-1,k)
. (где n = groupSize k = teamSize). Мой текущий выход
AAA
AAB
AAC
AA
ABB
ABC
AB
ACC
AC
A
BBB
BBC
BB
BCC
BC
B
CCC
CC
C
Что я делаю неправильно?
как sidenode к этому, 'return' ненужно – SomeJavaGuy
Просто примечание стороны: не используйте статические основной для тестирования коды. Вместо этого пишите блок-тесты. Используя модульные тесты, вы можете начать с небольших примеров; и у вас есть неявная проверка. Это намного лучше, чем просто печатать на консоли. Поскольку это слишком легко упустить, когда ваш алгоритм просто «слегка» неверен. – GhostCat
Что вы подразумеваете под модульными тестами? – Hello