本题要求实现一个计算非负整数阶乘的简单函数,使得可以利用该函数,计算1!+2!+⋯+10!的值。
函数接口定义:
double fact( int n );
其中n
是用户传入的参数,其值不超过10。如果n
是非负整数,则该函数必须返回n
的阶乘。
裁判测试程序样例:
#include <stdio.h>
double fact( int n );
int main(void)
{
int i;
double sum;
sum = 0;
for(i = 1; i <= 10; i++)
sum = sum + fact(i);
printf("1!+2!+...+10! = %f\n", sum);
return 0;
}
/* 你的代码将被嵌在这里 */
输入样例:
本题没有输入。
输出样例:
1!+2!+...+10! = 4037913.000000
解题思路:根据 裁判测试样例中sum = sum + fact(i);可知,fact函数是要求得到每个传入参数的阶乘,除了用递归还可以使用循环来解决。
double fact(int n) {
int i, a = 1;
for (i = 1; i <= n; i++)
a *= i;
return a;
}