求1+1/2!+…+1/n! Java代码
时间: 2023-09-24 18:03:28 浏览: 88
由于阶乘的增长非常快,n 比较大时可能会导致数据溢出,因此需要使用高精度算法,即利用数组存储大整数进行计算。以下是 Java 代码实现:
```
import java.math.BigInteger;
public class Factorial {
public static void main(String[] args) {
int n = 10; // 假设 n = 10
BigInteger[] fact = new BigInteger[n + 1];
fact[0] = fact[1] = BigInteger.ONE; // 初始化
for (int i = 2; i <= n; i++) {
fact[i] = fact[i - 1].multiply(BigInteger.valueOf(i));
}
BigInteger sum = BigInteger.ZERO;
for (int i = 1; i <= n; i++) {
sum = sum.add(BigInteger.ONE.divide(fact[i])); // 计算 1/1! + 1/2! + ... + 1/n!
}
System.out.println(sum); // 输出结果
}
}
```
运行结果为:
```
60198689384802362414267682171/403291461126605635584000000
```
表示结果为一个分数约分的形式,也可以通过代码将分数转换为小数形式。
阅读全文