如何打印本系列的第 n 项 y = -(1)-(1+2)+(1+2+3)+(1+2+3+4)-(1+2+3 +4+5) ....(1+2+3+4...+n) 在java中

问题描述 投票:0回答:1

很抱歉,我对编码有点陌生,但我被要求采用一个整数作为第 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 减去它以找到 n 的中间值。由于这是我在这里发表的第一篇文章,如果我没有错误地编写或格式化任何内容,请道歉,但请让我知道我还能做什么。我将不胜感激任何帮助。

java math arithmetic-expressions
1个回答
0
投票

看起来你想要减去两项,添加两项,减去两项......

我认为,最简单的方法是使用

arithemetic sum formula
表示 1 + 2 + 3 + 4 .. + n,即
((n+1)*n)/2
。在循环内执行此操作两次,然后更改符号。 请注意,循环必须递增 2,并在第一个奇数
n
的总和之后中断。

int n = 5;
int sign = -1;
int sum = 0;
for (int i = 1; i <= n; i+=2) {
    sum += sign*((i+1)*i)/2;
    if (i == n) {
        break;
    }
    sum += sign*((i+2)*(i+1))/2;
    sign = -sign;
}
System.out.println(sum);

打印

12
© www.soinside.com 2019 - 2024. All rights reserved.