计算1+1/2!+1/3!+ 1/4!+..的前20项和。要求:计算方法写在一个名为mySum的方法中,返回值为double类型,最终输出结果保留两位小数。
时间: 2023-11-08 21:04:12 浏览: 66
```java
public class Main {
public static void main(String[] args) {
double sum = mySum(20);
System.out.printf("%.2f", sum);
}
public static double mySum(int n) {
double sum = 1;
double factorial = 1; // 阶乘
for (int i = 2; i <= n; i++) {
factorial *= i;
sum += 1 / factorial;
}
return sum;
}
}
```
相关问题
用循环计算1 + 1/2! + 1/3! + 1/4! + ... +1/20! Java
这段Java代码用循环计算了1/1!到1/20!的和。在第一个引用中,代码中有一个错误,没有将变量s重置为1,导致结果错误。在第二个引用中,已经修复了这个错误。在第三个引用中,使用了递归来计算阶乘,通过递归调用JieChen方法来计算从1到20的阶乘结果。这种方法的时间复杂度较高,为O(n^2)。
Java代码如下:
```java
package java1;
public class sum {
// 运用递归用来计算从1到20分别的阶乘结果
public static int JieChen(int i) {
if (i == 1) {
return 1;
} else {
return (JieChen(i - 1) * i);
}
}
public static void main(String args[]) {
double sum = 0;
// 计算1/1!到1/20!的和
for (int i = 1; i <= 20; i++) {
int s;
// 用来计算i的阶乘
s = JieChen(i);
sum += 1.0 / s;
}
System.out.println(sum);
}
}
```
计算1/1!+1/2!…+n!的前n项和
以下是两种计算1/1!+1/2!…+n!的前n项和的方法:
1.使用for循环计算:
```python
n = int(input("请输入正整数n:"))
sum = 0
factorial = 1
for i in range(1, n+1):
factorial *= i
sum += 1/factorial
print("1/1!+1/2!+...+1/n!的前n项和为:%.2f" % sum)
```
2.使用while循环计算:
```python
n = int(input("请输入正整数n:"))
sum = 0
factorial = 1
i = 1
while i <= n:
factorial *= i
sum += 1/factorial
i += 1
print("1/1!+1/2!+...+1/n!的前n项和为:%.2f" % sum)
```