**我无法弄清楚如何解决这个问题,而且我已经盯着它看了几个小时。我需要编写一个跟随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)。**
答案 0 :(得分:1)
你有一个很好的问题,我们只需要提高你的帖子质量。 Stack Overflow是一个帮助您解决编码问题的网站,但我们不会100%为您编写。向我们提供您的代码或您尝试的任何其他内容总是有帮助的。
你提到你知道如何获得正常的谐波,但不知道交替的符号。首先寻找一种模式。给定n,我们需要打印n个数字,但只需要n - 1个运算符。这意味着我们有一个fencepost问题。在这种情况下,我认为很明显我们总是需要首先打印1。然后每个后续打印都是操作符和分数。
这里的模式是什么?我会给你一个提示:偶数前面有减法,奇数前面加上...
答案 1 :(得分:1)
对于交替唱歌,我会使用缩图来(-1)^(i),或者在这种情况下(-1)^(i-1)。 什么打印每个数字到结果,它发生是因为你在循环内打印,所以自然它打印时间。你应该在循环结束后打印它。