求出e的值

GitHub跳转原题关系图返回列表

递推计算阶乘倒数并累加,得到截断的 e 级数近似值。

OJ: noi_openjudge

题目 ID: ch0105-35

难度:入门

标签:循环数学递推python

日期: 2026-07-30 23:01

题意

根据 e=1+1/1!+1/2!++1/n!e=1+1/1!+1/2!+\cdots+1/n! 计算近似值,并输出十位小数。

思路

初始和为常数项 11。循环中递推当前的 factorial,再加入 1 / factorial。最后使用 f"{total:.10f}" 按题意固定保留十位小数。

代码

Python代码

python
limit = int(input())
factorial = 1
total = 1.0

for number in range(1, limit + 1):
    factorial *= number
    total += 1 / factorial

print(f"{total:.10f}")

C++代码

cpp
#include <cstdio>


int main(){
    int n;
    scanf("%d",&n);
    double i,s = 1;
    double sum=1;
    for (i=1;i<=n;i++){
        s = s*i;
        sum += 1.0/s;
    }
    printf("%0.10f\n",sum);

    return 0;
}

复杂度

时间复杂度为 O(n)O(n),额外空间复杂度为 O(1)O(1)

总结

同一个阶乘递推既可用于整数和,也可用于它的倒数级数。