使用处理求解: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);
}
但是您的代码目前计算以下内容:

考虑 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);
}
我想在处理中解决这道数学题:
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);
}
但是您的代码目前计算以下内容:
考虑 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);
}