累积和的问题

时间:2013-09-21 06:26:38

标签: java for-loop cumulative-sum

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

}

2 个答案:

答案 0 :(得分:1)

操作

(1/i)

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

(1.0/i)

获取小数结果而不是int结果。

答案 1 :(得分:1)

你需要输入强制转换为

试试这种方式

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;
}

}