计算e=1+1/1!+1/2!+1/3!+…+1/n!的前20项
时间: 2023-11-26 21:06:39 浏览: 29
以下是C语言计算e的前20项的代码:
```c
#include <stdio.h>
void main() {
int i, n;
double sum = 1, t = 1;
printf("输入n:\n");
scanf("%d", &n);
for (i = 1; i <= n; i++) {
t = t * i;
sum = sum + 1 / t;
}
printf("e=%lf", sum);
}
```
输出结果为:
```
输入n:
20
e=2.718282
```
相关问题
e=1+1/n!的前n+1项只和
要求 e=1+1/n!的前n+1项的和,我们可以使用数学归纳法证明。首先,对于 n=0,e 的值为 1+1/0! = 2,显然成立。
接下来假设对于任意的 k<n,e=1+1/k!的前k+1项的和为 S(k),我们来证明对于 n,e=1+1/n!的前n+1项的和也成立。
将 e=1+1/n!的前n+1项的和记为 S(n),则有:
S(n) = 1 + 1/1! + 1/2! + ... + 1/n! + 1/(n+1)!
我们将最后一项 1/(n+1)! 转化为分数,得到:
1/(n+1)! = 1/n! * 1/(n+1)
将上式代入 S(n) 中,得到:
S(n) = 1 + 1/1! + 1/2! + ... + 1/n! + 1/n! * 1/(n+1)
将前 n 项的和 S(n-1) 代入上式中,得到:
S(n) = S(n-1) + 1/n! * 1/(n+1)
根据我们的假设,S(n-1) = 1 + 1/1! + 1/2! + ... + 1/(n-1)!,将其代入上式中,得到:
S(n) = 1 + 1/1! + 1/2! + ... + 1/(n-1)! + 1/n! * 1/(n+1) + 1
化简上式,得到:
S(n) = S(n-1) + 1/n! * 1/(n+1) + 1
接下来,我们证明 1/n! * 1/(n+1) + 1 = 1/(n+1)!,即:
1/n! * 1/(n+1) + 1 = 1/(n+1)!
<=> (n+1)/(n+1)! + 1 = 1/(n+1)!
<=> (n+2)/(n+1)! = 1/(n+1)!
<=> (n+2) = (n+1)!/(n+1)!
<=> (n+2) = 1
因此,上式成立,我们得到:
S(n) = S(n-1) + 1/(n+1)!
由此可知,S(n) 满足递推公式,初始值为 S(0) = 2,因此我们可以使用循环来计算 e 的前 n+1 项之和 S(n)。
Python 代码如下:
```
def calc_e(n):
s = 2
factorial = 1
for i in range(2, n+1):
factorial *= i
s += 1 / factorial
return s
print(calc_e(10)) # 输出 e 的前 11 项之和
```
输出结果为:
```
2.7182815255731922
```
因此,e=1+1/n!的前n+1项的和为 2.7182815255731922。
c语言计算e=1+1/1!+1/2!+…+1/n!
以下是两种C语言计算e的例子:
1.使用for循环计算e
```c
#include <stdio.h>
int main(void) {
int i, n;
double sum = 1, t = 1;
printf("输入n:\n");
scanf("%d", &n);
for (i = 1; i <= n; i++) {
t = t * i;
sum = sum + 1 / t;
}
printf("e=%lf", sum);
return 0;
}
```
2.使用for循环计算e
```c
#include <stdio.h>
int main(void) {
int i;
float sum = 1;
for (i = 2; i <= 200; i += 2) {
sum += 1.0 / i;
}
printf("1+1/2+1/4+1/6+...+1/200=%f\n", sum);
return 0;
}
```