0

这是一个我遇到麻烦的简单问题。这个问题需要我编写一个名为 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;
}

}
4

2 回答 2

1

操作

(1/i)

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

(1.0/i)

得到小数结果而不是 int 结果。

于 2013-09-21T06:28:28.813 回答
1

你需要输入 cast to 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;
}

}
于 2013-09-21T06:31:08.757 回答