请编写程序,输入 n (n≤20),计算并输出从 0 到 n 的阶乘之和。 0!+1!+2!+3+⋯+n! 输入样例 4 输出样例 34 用c语言编写一个程序
时间: 2024-10-21 08:02:21 浏览: 50
当然,这是一个经典的递归问题,可以用C语言来解决。下面是C语言的一个简单程序,用于计算0到n的阶乘之和:
```c
#include <stdio.h>
unsigned long long factorial_sum(int n) {
if(n == 0 || n == 1) { // 阶乘的基本情况,0! 和 1! 都等于1
return 1;
} else {
unsigned long long fact = factorial_sum(n - 1); // 递归调用求 (n-1)!
return fact * n; // n! = n * (n-1)!
}
}
int main() {
int n;
printf("请输入一个不大于20的整数:");
scanf("%d", &n);
if(n > 20) {
printf("错误:输入值超过20。\n");
} else {
unsigned long long sum = factorial_sum(n);
printf("从0到%d的阶乘之和是:%llu\n", n, sum);
}
return 0;
}
```
请注意,对于较大的n值,由于阶乘的增长非常快,可能会超出`unsigned long long`类型的范围,导致溢出。实际应用中,你需要考虑使用更大的数据类型,如`__uint128_t`或者动态分配内存来存储结果。
阅读全文