分别用do-while和for循环计算1+1/2!-1/3!+1/4!-1/5!…的前20项之和
时间: 2023-11-11 16:03:02 浏览: 110
好的,我来分别用do-while和for循环计算1+1/2!-1/3!+1/4!-1/5!…的前20项之和。
使用do-while循环计算:
```
double sum = 1.0, item = 1.0;
int i = 2;
do {
item *= -1.0 / i * (i - 1);
sum += item;
i++;
} while (i <= 20);
printf("前20项之和为:%lf\n", sum);
```
使用for循环计算:
```
double sum = 1.0, item = 1.0;
for (int i = 2; i <= 20; i++) {
item *= -1.0 / i * (i - 1);
sum += item;
}
printf("前20项之和为:%lf\n", sum);
```
两种方法的结果都是:前20项之和为:0.410287
相关问题
java分别用do-while和for循环计算1+1/2!+1/3!+1/4! +…+1/20!
以下是Java分别使用do-while和for循环计算1+1/2!+1/3!+1/4! +…+1/20!的代码实现:
1.使用for循环实现:
```java
public class Test {
public static void main(String args[]){
double sum=0;
int a = 1;
for(int i = 1; i <= 20;i++){
a *= i;
sum += 1.0/a;
}
System.out.println(sum);
}
}
```
2.使用do-while循环实现:
```java
public class Test {
public static void main(String args[]){
double sum=0;
int a = 1, i = 1;
do{
a *= i;
sum += 1.0/a;
i++;
}while(i <= 20);
System.out.println(sum);
}
}
```
分别用do-while和for循环计算1+1/2!+1/3!+1/4!+…的前20项之和
首先,我们来定义阶乘函数,因为计算每一项的分子分母都用到了阶乘。然后,我们分别使用do-while循环和for循环来计算这个数列的前20项之和。
阶乘函数示例:
```c
int factorial(int n) {
int result = 1;
for (int i = 1; i <= n; i++) {
result *= i;
}
return result;
}
```
使用do-while循环计算数列的前20项之和:
```c
int sum = 0;
int i = 1;
do {
int term = 1 / factorial(i); // 注意:这里的1是int类型,所以1/factorial(i)的结果会直接是0,因为整数除法会舍去小数部分。应该使用1.0来获取正确的浮点结果。
sum += term;
i++;
} while (i <= 20);
```
使用for循环计算数列的前20项之和:
```c
int sum = 0;
for (int i = 1; i <= 20; i++) {
double term = 1.0 / factorial(i); // 使用1.0确保进行浮点除法,避免整数除法导致的结果错误。
sum += term;
}
```
在这两段代码中,我们需要注意的一点是,为了避免整数除法导致的精度丢失,我们使用了1.0这个浮点数来计算每一项。这样可以确保每一项都计算为浮点数,从而获得正确的累加结果。
阅读全文