累积总和问题



这是一个我遇到麻烦的简单问题。这个问题要求我编写一个名为 fractionSum 的方法,该方法接受整数参数并返回前 n 项之和的双倍。

例如,如果参数为 5,则程序将添加 (1+(1/2)+(1/3)+(1/4)+(1/5)) 的所有分数。换句话说,它是黎曼和的一种形式。

由于某种原因,for 循环不会累积总和。

代码如下:

public class Exercise01 {
public static final int UPPER_LIMIT = 5;
public static void main(String[] args) {
    System.out.print(fractionSum(UPPER_LIMIT));
}
public static double fractionSum(int n) {
    if (n<1) {
        throw new IllegalArgumentException("Out of range.");
    }
    double total = 1;
    for (int i = 2; i <= n; i++) {
        total += (1/i);
    }
    return total;
}
}

您需要键入 cast 到 double

试试这种方式

public class Exercise01 {
public static final int UPPER_LIMIT = 5;
public static void main(String[] args) {
    System.out.print(fractionSum(UPPER_LIMIT));
}
public static double fractionSum(int n) {
    if (n<1) {
        throw new IllegalArgumentException("Out of range.");
    }
    double total = 1;
    for (int i = 2; i <= n; i++) {
        total += (1/(double)i);
    }
    return total;
}
}

操作

(1/i)

正在处理整数,因此将以 int 的形式生成结果。 将其更新为:

(1.0/i)

以获得分数结果而不是整数结果。

相关内容

  • 没有找到相关文章

最新更新