简单算法:把一个数分解成几个数之和

小白记录,大佬勿喷!!

/**分析
 2  1+1;
 3 1+2,1+1+1
 4 1+3,2+2,1+1+2,1+1+1+1
 5 1+4,2+3,1+1+3,1+2+2,1+1+1+2,1+1+1+1+1
 6 1+5 2+4 3+3 1+1+4 1+2+3 1+1+1+3 1+1+2+2 1+1+1+1+2 1+1+1+1+1+1
 *代码实现
 * 1.定义一个外部变量(用来记录递归的次数)
 * 2.定义一个静态方法,进行调用
 * 3.两种情况分别为a为奇数和偶数的情况
 * (1)a为偶数时,两数相加最先显示的应该是1+(a-1),最后一个是a/2+a/2,判断我们定义的count是否大于0,
 * 如果大于0,循环打印1+,根据count的值确定打印次数,如果小于等于0,只打印两数相加的结果;
 *(2)a为技术时同理,不过判断循环次数时应该a/2+1;
 * 4.通过a-1,作为下次遍历的输入值,并且进行count++,进入下次循环可以用来判断,打印多少个1+
 * 5.加上一个退出条件s<2;
 * 6.进行下次遍历
 */
public class ques4 {
    public static int count=0;
    public static void main(String[] args) {
        js(6);
    }


    public static int js(int a) {
        if (a % 2 == 0) {
            for (int i = 1; i <= a / 2; i++) {
                if(count>0){
                for(int m=0;m0){
                    for(int m=0;m 
  

控制台输出:

1+5
2+4
3+3
1+1+4
1+2+3
1+1+1+3
1+1+2+2
1+1+1+1+2
1+1+1+1+1+1

你可能感兴趣的:(算法,java)