使用处理求解:S=1+1/2-1/3+1/4...+1/99-1/100

Use processing solve: S=1+1/2-1/3+1/4...+1/99-1/100

我想在处理中解决这道数学题:

S=1+1/2-1/3+1/4...+1/99-1/100.

这是我的代码(不知道为什么它不起作用。我想它会在控制台中打印一个数字,但它会输出一系列自然数):

float N = 0;
float T = 0;
int i = 1;

void draw() {
    for (i = 1; i < 100; i += 2) {
        N = N + 1 / i;
        T = T + 1 / (i + 1);
    }
    println(N - T);
}

1 / i是两个整数之间的除法表达式,其结果将是通过截断结果的小数部分得到的int。由于您正在计算 float 您可以使用 1f 浮点文字

来解决它
for (int i = 1; i < 100; i += 2) {
  N = N + 1f / i;
  T = T + 1f / (i + 1);
}

但是您的代码目前计算以下内容:

foo+bar

考虑 i = 1,你得到 T = 0.5,你稍后从 N 中减去,同时你应该根据你的问题陈述添加它。解决它的一种方法是将代码编写为:

float sum = 1;
for (int i = 2; i <= 100; i++) {
  float term = 1f / i;
  if (i % 2 != 0) {
    term *= -1;
  }
  sum += term;
}
System.out.println(sum);

首先,draw() 运行每一帧。使用 setup() 代替,它运行一次。

其次,整数除以整数。来吧,做 println(1/i) 看看魔术。

第三,在去SO之前总是google周围一段时间。您将通过自己找到它来了解更多。 google 和一点点努力就可以解决这个问题 ;)

工作代码:

float N = 0;
float T = 0;
int i = 1;

void setup() {
    for (i = 1; i < 100; i += 2) {
        N = N + 1.0 / i;
        T = T + 1.0 / (i + 1);
    }
    println(N - T);
}