本文主要是介绍把一个数分解成任意几个数之和,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
例如: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;// 计算分割剩余的值 同时存储的下标+1search(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();}
}
这篇关于把一个数分解成任意几个数之和的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!