/*******************************************************
* 整数拆分
*/
public class Divide {
public static void divide(int[] a, int total, int current, int k, int sum) {
for (int i = current; i >= 1; i--) {
if (k > 0) {
if (i <= a[k - 1]) {
if (sum + i == total) {
a[k] = i;
System.out.print("[");
for (int j = 0; j <= k; j++) {
System.out.printf("%d, ", a[j]);
}
System.out.println("]");
} else if (sum + i < total) {
a[k] = i;
divide(a, total, current - i, k + 1, sum + i);
}
}
} else {
if (sum + i == total) {
a[k] = i;
System.out.print("[");
for (int j = 0; j <= k; j++) {
System.out.printf("%d, ", a[j]);
}
System.out.println("]");
} else if (sum + i < total) {
a[k] = i;
divide(a, total, current - i, k + 1, sum + i);
}
}
}
}
public static void main(String[] args) {
int n = 4;
int[] data = new int[n];
divide(data, n, n, 0, 0);
}
}
联系客服