自然常数e可以用级数1+1/1!+1/2!+⋯+1/n!来近似计算。本题要求实现一个计算阶乘的简单函数,使得可以利用该函数,对给定的非负整数n,求该级数的前n+1项和。
函数接口定义:
double fact( int n );
其中n是用户传入的参数,函数返回n的阶乘。
裁判测试程序样例:
#include <stdio.h>
double fact( int n );
int main(void)
{
int i, n;
double sum;
scanf("%d", &n);
sum = 1;
for(i = 1; i <= n; i++){
sum = sum + 1.0/fact(i);
}
printf("%f\n", sum);
return 0;
}
/* 请在这里填写答案 */
输入样例:
10
输出样例:
2.718282
解题思路:可以从测试样例中sum = sum + 1.0/fact(i);了解到,fact函数只需要计算阶乘即可,可以直接递归处理。
double fact(int n)
{
if (n == 1)
return 1;
else
return fact(n - 1) * n;
}