您的位置:首页 > 编程语言 > Java开发

拆开数字(如4=1+1+1+1, 4=1+1+2, 4=2+2, 4=3+1)Java实现,递归和非递归版本

2019-08-17 13:04 127 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/qq_38214064/article/details/99691828

递归版本

[code]private void parse(int n, int s) {
if (n < 1 || s >= Integer.MAX_VALUE)
return;

System.out.print(s + " = " + n);
int c = n;

while (c != s){
System.out.print(" + 1");
c++;
}

System.out.println();

parse(n - 1 , s);

c = n;
int t = c;
while (c != s){

if (c + t == s && c != s - 1){
System.out.println(s + " = " + n + " + " + c);
}
c++;
}
}

 非递归版本

[code]private void parse1(int n){
if (n <= 1 || n >= Integer.MAX_VALUE)
throw new IllegalArgumentException("参数非法!");
int c = n - 1;
while (c > 0){
int i = c;
System.out.print(n + " = " + c + " + ");
while (i < n){
if (i < n -1)
System.out.print("1 + ");
else
System.out.print("1");
i++;
}
System.out.println();
c--;
}
c = 2;
while (c <= n / 2){
System.out.print(n + " = " + c + " + ");
int sum = 0;
for (int i = c; i < n; i++) {
sum += 1;
}
System.out.println(sum);
c++;
}

}

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: