假设数字是2并且n是3。
输出应该是:
[2, 0, 0][0, 2, 0][0, 0, 2][1, 1, 0][1, 0, 1][1, 0, 1][0, 1, 1]
如果n为2,则输出应为:
[2, 0][0, 2][1, 1]
好吧,我尝试使用递归编写一个方法,并且我已经成功地编写了它。
这是方法。
public static void divideANumberIntoNNumbers(int number, int n) {
try {
for (int i = number; i >= 0; --i) {
System.out.print(i + " ");
int x = n - 1;
if (x > 0) {
divideANumberIntoNNumbers(number - i, x);
} else {
return;
}
}
} finally {
System.out.println();
}
}
以下是我得到的输出。
当数字 = 4 且 n = 2 时:
4 0
3 1
2 2
1 3
0 4
当数字 = 4 且 n = 3 时:
4 0 0
3 1 0
0 1
2 2 0
1 1
0 2
1 3 0
2 1
1 2
0 3
0 4 0
3 1
2 2
1 3
0 4
在第二个输出中,如果您看到突出显示的部分,则排列是2 2 0
and2 1 1
和2 0 2
。
我想知道我需要对该方法进行哪些修改,以便可以将排列存储在数据结构中List<List<Integer>>