我有一个关于计算所有可能组合的问题。例如,如果我有一个递归方法,给我一个输出: 一个。 0 0 湾0 1 C。 1 0 d。 1 1
在这种情况下,我有8个可能的输出。我应该如何使用java来计算它们? 我试图使用一个计数器,但它给了我4个。
请帮忙。 谢谢。 这是我的代码。
public static void printAllAssignments(char set[], int k) {
int n = set.length;
printAllAssignments(set, "", n, k);
}
// The main recursive method to print all possible strings of length k
public static void printAllAssignments(char set[], String prefix, int n, int k) {
// Base case: k is 0, print prefix
if (k == 0) {
counterTotalAssignments++;
System.out.println("Occupancies: " + prefix);
return;
}
// One by one add all characters from set and recursively
// call for k equals to k-1
for (int i = 0; i < n; ++i) {
// Next character of input added
String newPrefix = prefix + set[i];
// k is decreased, because we have added a new character
printAllAssignments(set, newPrefix, n, k - 1);
}
}
public static void main(String[] args) {
char charSet[] = {'0', '1'};
int k = 2;
printAllAssignments(charSet, k);
System.out.println("Total number of assignments: " + counterTotalAssignments);
}
output:
Occupancies: 00
Occupancies: 01
Occupancies: 10
Occupancies: 11
Total number of assignments: 4
答案 0 :(得分:1)
没有理由计算它们,可以根据您的输入进行计算:
combinations = exp (possible values per digit, number of digits)
如果你坚持计算它们,我会在你的情况下使用未使用的返回值:
让基本案例返回1,并在递归情况下返回递归调用的返回值之和。
我刚注意到你的柜台正在给你正确的价值。你为什么期望它是8?
00 // 1.
01 // 2.
10 // 3.
11 // 4.