欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

把一个数分解成任意几个数之和

程序员文章站 2024-02-03 16:49:28
...

例如:4的结果有,(1+3),(2+2),(1+1+2),(1+1+1+1)

public class Demo {
    // 存储每次分割的值
    static int[] arr;
    // 需要分割的值
    static int num = 4;

    public static void main(String[] args) {
        // 分割的值最多分成1+1+...+1 最多就是他本身的长度
        arr = new int[num];
        search(num,1,0);
    }

    /**
     * 计算
     * @param n 需要计算的数
     * @param s 需要拆分的最小数
     * @param x 分割存储的下标
     */
    private static void search(int n, int s, int x) {
        // 当需要计算的数大于0的时候才开始计算
        if(n>0) {
            for(int i=s;i<=n;i++) {
                // 存储本次分割出的值
                arr[x]=i;
                // 计算分割剩余的值 同时存储的下标+1
                search(n-i,i,x+1);
            }
            return;
        }
        // 如果分割的值和分割出来的第一个值相同时 说明该值不可分割 不进行输出
        if(num != arr[0])
            System.out.print(num+"="+arr[0]);
        // 循环把分割出来的数组拼接
        for(int i=1;i<x;i++) {
            System.out.print("+"+arr[i]);
        }
        //换行
        System.out.println();
    }
}

 

相关标签: Java java