在Java中的交替谐波系列

时间:2014-02-13 23:17:58

标签: java math

**我无法弄清楚如何解决这个问题,而且我已经盯着它看了几个小时。我需要编写一个跟随1 - 1/2 + 1/3 - 1/4 + 1/5 - 1/6 + ... 1 / n的代码,但我能弄清楚该怎么办才是1 + 1 / 2 +1/3 +1/4 + 1 / n。我到目前为止的代码是:

public static void main(String[] args) {
    double a = 0;

    Scanner input = new Scanner(System.in);

    System.out.print("enter");
    int c = input.nextInt();

    for (double i = 1; i <= c; i++) {

        if (i % 2 ==0) {
            a-= (1/i);
        }
        if (i % 2 !=0){
            a+=(1/i);
        }
    System.out.print(a + " ");
}

问题是:

编写一个程序,读取以sentinal值0结尾的正整数序列。对于每个值(称之为n),计算并打印 1 - 1/2 + 1/3 - 1/4 + 1/5 - 1/6 + ... 1 / n 每个结果(每个输入值一个)应该在同一行上,由&#34;,&#34;分隔。 (逗号空间)。但是,如果某个点的n值小于先前读取的n值,则结束当前结果行(即打印一个新行),然后打印单词&#34; reset&#34;在下一行,然后在下一行打印下一组结果。 输出的结尾应该包含单词&#34;结果的结尾&#34;在另一行(使用println)。**

2 个答案:

答案 0 :(得分:1)

你有一个很好的问题,我们只需要提高你的帖子质量。 Stack Overflow是一个帮助您解决编码问题的网站,但我们不会100%为您编写。向我们提供您的代码或您尝试的任何其他内容总是有帮助的。

你提到你知道如何获得正常的谐波,但不知道交替的符号。首先寻找一种模式。给定n,我们需要打印n个数字,但只需要n - 1个运算符。这意味着我们有一个fencepost问题。在这种情况下,我认为很明显我们总是需要首先打印1。然后每个后续打印都是操作符和分数。

  • 当n = 2时,我们在分数之前使用减法。
  • 当n = 3时,我们在分数之前使用加法。
  • 当n = 4时,我们在分数之前使用减法。
  • 当n = 5时,我们在分数之前使用加法。

这里的模式是什么?我会给你一个提示:偶数前面有减法,奇数前面加上...

答案 1 :(得分:1)

对于交替唱歌,我会使用缩图来(-1)^(i),或者在这种情况下(-1)^(i-1)。 什么打印每个数字到结果,它发生是因为你在循环内打印,所以自然它打印时间。你应该在循环结束后打印它。