获得带有旧数字的整数之和1 +(1 + 2)+(1 + 2 + 3)+ ... +(1 + 2 + 3 + ... + n)

时间:2017-08-10 19:54:06

标签: java loops for-loop

我正试图达到这个目标:

1 + (1 + 2) + (1 + 2 + 3) + ... + (1 + 2 + 3 + ... + n)

我已经得到了这个结果: -

(1 + 2) + (2 + 3)

使用此代码:

int n = 8;
for (int i = 1; i < n; i++){
     int j = i + 1;
     System.out.print("(" + i + " + " +  j + ")");
}

如何取得最佳成绩?

3 个答案:

答案 0 :(得分:1)

在循环之前移动j的声明,并使用0对其进行初始化,然后将当前i添加到j

  那会解决什么问题? - AKSW

这将计算等式的总和。

要打印等式,您还需要一个循环:

int n = 8;
StringBuilder equation = new StringBuilder("1");
StringBuilder equationGroup = new StringBuilder("1");

for (int i = 2; i < n; i++) {
    equationGroup.append(" + ");
    equationGroup.append(i);
    equation.append(" + (");
    equation.append(equationGroup.toString());
    equation.append(")");
}
System.out.println(equation.toString());

答案 1 :(得分:1)

好吧,感谢@YCF_L你的回答它是正确的,但是这个完整的编辑后,我发布它以防有些人需要完整的解决方案:

    int n = 8;
    String del;
    String delPlus = "";
    String rightPract = "", leftPract = "";
    for (int i = 2; i < n; i++) {
        System.out.print(delPlus + rightPract);
        del = "";
        for (int j = 1; j < i; j++) {
            System.out.print(del + j);
            del = " + ";
        }
        System.out.print(leftPract);
        delPlus = " + ";
        rightPract = "(";
        leftPract = ")";
    }

现在的结果是: -

1 + (1 + 2) + (1 + 2 + 3) + (1 + 2 + 3 + 4) + (1 + 2 + 3 + 4 + 5) + (1 + 2 + 3 + 4 + 5 + 6)

答案 2 :(得分:0)

如果采用递归方法,则必须将其视为另一个递归中的递归add(i,n)生成1和(1 + 2)以及(1 + 2 + 3)直到(1 + 2 + 3 ... n)。然后sum(i,n)递归地将它们加在一起

public static int add(int i, int n){
    if(i == n){
        return n;
    }
    return i + add(i+1,n);
}

public static int sum(int i, int n){
    if(i == n){
        return add(0,n);
    }
    return add(0, i) + sum(i+1,n);
}

public static void main(String[] args){
    int n = 8;
    System.out.print(sum(0, n));
}