简体   繁体   中英

Get sum of integers with old numbers 1 + (1 + 2) + (1 + 2 + 3) + … + (1 + 2 + 3 + … + n)

I'm trying to reach this :

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

I'm already getting this result:-

(1 + 2) + (2 + 3)

with this code :

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

How can I achieve the top result ?

You need two loops like this :

int n = 8;

String del;
String del2 = "";

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

code demo

Move the declaration of j before the loop and initialize it with 0 , then just add the current i to j .

That would solve what? – AKSW

This would calculate the sum of the equation.

To print the equation you also need one loop only:

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());

Well, thanks @YCF_L for your answer it's the correct one, but this complete one after edit, i posted it in case some one need the complete solution:

    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 = ")";
    }

Now the result is :-

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

If you take the recursion approach you have to think of it as a recursion inside another recursion . add(i,n) generates 1 and (1+2) and (1+2+3) up to (1+2+3...n). then the sum(i,n) recursively sum them together

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));
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM