public class test6 {
//对n进行加法划分,对n自己进行划分无心义
//a数组作个缓存,记录划分数据,k表示当前位置
public static void f(int n,int a[],int k){
//打印
if (n<=0) {
for (int i = 0; i < k; i++) {
System.out.print(a[i]+" ");
}
System.out.println();
return;
}
for (int i = n; i >0; i--) {
if(k>0&& a[k-1]<i) continue;//划分时后一项要小于前一项
a[k]=i;//将每一个划分状况的数字放入数组,剩下的又交给递归来作
f(n-i, a, k+1);//n-i进行下一个数的划分,k+1下一个位置继续分解
}
}
public static void main(String[] args) {
int[] a=new int [30];
f(6, a, 0);
}
}数组