我正试图达到这个目标:
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 + ")");
}
如何取得最佳成绩?
答案 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));
}