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