【Java】用递归法把一个数加法划分

例如:
6可以划分为:
6
5 1
4 2
4 1 1
3 3
3 2 1
3 1 1 1
2 2 2
2 2 1 1
2 1 1 1 1
1 1 1 1 1 1
5可以划分为:
5
4 1
3 2
3 1 1
2 2 1
2 1 1 1
1 1 1 1 1

public class a {
    
    
    //对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 && i>a[k-1]) continue;
            a[k] = i;
            f(n-i,a,k+1);
        }
    }

    public static void main(String[] args){
    
    
        int[] a = new int[1000];
        f(6,a,0);
    }
}

猜你喜欢

转载自blog.csdn.net/qq_36045898/article/details/112784797