抱歉,我对编码有点陌生,但我被要求将一个整数作为第 n 项的输入并打印出此模式中的值,并且我已经编写了一些有效的东西,但我觉得好像我我把事情严重复杂化了。这是有问题的系列:
y = -(1)-(1+2)+(1+2+3)+(1+2+3+4)-(1+2+3+4+5) .... (1+2 +3+4...+n)
这是代码:
import java.util.Scanner;
public class wontwork {
public static void main(String[] args) {
Scanner np = new Scanner(System.in);
System.out.println("Enter n");
int n = np.nextInt();
int count = 1;
int sum = 0;
int y = 0;
for(int i = 1; i<=n ; i+=2) {
if(count%2==0) {
sum+=i;
y+=sum;
sum+=i+1;
y+=sum;
}
else {
sum+=i;
y-=sum;
sum+=i+1;
y-=sum;
}
count++;
}
if(n%2!=0) {
if (count%2==0) {
System.out.print(y+sum);
}
else {
System.out.print(y-sum);
}
}
else {
System.out.print(y);
}
np.close();
}
}
当输入 4 时,样本输出应给出 12;当输入 5 时,样本输出应给出 -3。
据我了解,它是减去两次并加上两倍的值之和。我所做的是创建一个 for 循环并采用一个计数变量来检查是否首先添加或减去,具体取决于它是奇数还是偶数,然后采用 sum 变量来计算括号之间每次迭代的值并添加或将其减去 y。
但每次循环运行时,这个过程都会发生两次。因此,当计数为奇数时,y 在第一个循环中添加 -(1) 和 -(1+2),然后在下一个循环中,当计数为奇数时,y 添加 (1+2+3) 和 (1+2+3+4)甚至。我这样做是因为如果我单独添加 (1+2+3) 计数为偶数,我还必须添加 (1+2+3+4) 并增加计数,但是,这使它成为奇数,并且它是对于使用它进行加法或减法不再有用。如果我错过了一些明显的东西,我会很讨厌,但我一生都无法弄清楚如何才能知道它何时增加两次,然后使其为正值或负值。
出于这个原因,如果不是最后的 if else 语句,程序只会为每个 2n 输出正确的值,并修复我获取最后存储的总和值并检查 count 是奇数还是偶数,然后添加或再次减去 y it 即可找到 n 的中间值。由于这是我在这里发表的第一篇文章,如果我没有错误地编写或格式化任何内容,请道歉,但请让我知道我还能做什么。我将不胜感激任何帮助。