小白记录,大佬勿喷!!
/**分析 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;m<count;m++){ System.out.print(1+"+"); } } System.out.println(i + "+" + (a - i)); } } if (a % 2 == 1) { for (int i = 1; i < a / 2 + 1; i++) { if(count>0){ for(int m=0;m<count;m++){ System.out.print(1+"+"); } } System.out.println(i + "+" + (a - i)); } } int s=a-1; count++; if(s<2){ return 0; } return js(s); } }
控制台输出:
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