【题目描述】
按泰勒级数公式e = 1 + 1/1! + 1/2! +1/3! + ... + 1/n!求e的值。
其中n的值由键盘输入,计算并输出结果(保留5位小数)。
【输入格式】
4
【输出格式】
2.70833
【题目分析】
问题实则为求e = (1/0!) + (1 / 1!)+ (1 / 2!)+ (1 / 3!)+ ... + (1 / n!)
可以知道分子始终为1,分母从0!开始每次要阶乘的数加1
【代码1---用递归(推荐)】
#include<stdio.h>
int factorial(int n)
{
if (n > 1)
{
return n * factorial(n - 1);//---用递归求n!
}
else//0!=1!=1
return 1;
}
int main()
{
int n = 0;
int i = 0;
double e = 0.0;
scanf("%d", &n);
for (i = 0; i <= n; i++)
{
factorial(i);//factorial英文意思为阶乘
e += 1.0 / factorial(i);
}
printf("%.5lf\n", e);
return 0;
}
【代码2---不用递归】
#include<stdio.h>
int factorial(int n)
{
int m = 1;
int i = 0;
if (n > 1)
{
//for循环求阶乘
for (i = 1; i <= n; i++)
{
m = m*i;
}
return m;
}
else
{
return 1;
}
}
int main()
{
int n = 0;
int i = 0;
double e = 0.0;
scanf("%d", &n);
for (i = 0; i <= n; i++)
{
factorial(i);//factorial英文意思为阶乘
e += 1.0 / factorial(i);
}
printf("%.5lf\n", e);
return 0;
}