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);
}
}數組