本题要求实现一个计算非负整数阶乘的简单函数,并利用该函数求 1!+2!+3!+...+n! 的值。 函数接口定义: double fact( int n ); double factsum( int n ); 函数fact应返回n的阶乘,建议用递归实现。函数factsum应返回 1!+2!+...+n! 的值。题目保证输入输出在双精度范围内。 裁判测试程序样例: #include <stdio.h> double fact( int n ); double factsum( int n ); int main() { int n; scanf("%d",&n); printf("fact(%d) = %.0f\n", n, fact(n)); printf("sum = %.0f\n", factsum(n)); return 0; }
时间: 2024-03-03 09:46:48 浏览: 204
C语言程序设计-求k!(k〈13),所求阶乘的值作为函数值返回;(要求使用递归).c
5星 · 资源好评率100%
以下是 C++ 的实现代码:
```cpp
#include <stdio.h>
double fact(int n) {
if (n == 0 || n == 1) { // 0!和1!的结果都为1
return 1;
} else {
return n * fact(n - 1); // 递归计算n的阶乘
}
}
double factsum(int n) {
double sum = 0;
for (int i = 1; i <= n; i++) {
sum += fact(i); // 求1!+2!+...+n!的和
}
return sum;
}
int main() {
int n;
scanf("%d", &n);
printf("fact(%d) = %.0f\n", n, fact(n));
printf("sum = %.0f\n", factsum(n));
return 0;
}
```
首先定义了 `fact()` 函数来计算非负整数n的阶乘,使用递归实现。然后定义了 `factsum()` 函数来计算1!+2!+...+n!的和,即把1到n的阶乘累加起来。最后在主函数中调用这两个函数并输出结果即可。
阅读全文