如何用C语言编程计算从1到n的所有阶乘(1! + 2! + ... + n!)?
时间: 2024-11-23 19:21:42 浏览: 14
计算 S=1!+2!+3!+...+N! C语言代码
在C语言中,计算从1到n的所有阶乘是一个典型的递归或循环的问题。这里提供一种简单的递归方法:
```c
#include <stdio.h>
unsigned long long factorial(int n) {
if (n == 0 || n == 1) { // 阶乘的基础情况,0! 和 1! 都等于1
return 1;
} else {
return n * factorial(n - 1); // 递归调用,n! = n * (n - 1)!
}
}
unsigned long long sum_of.factorials(int n) {
unsigned long long sum = 0; // 初始化总和为0
for (int i = 1; i <= n; i++) {
sum += factorial(i); // 将每个数的阶乘累加到sum上
}
return sum;
}
int main() {
int n;
printf("请输入一个正整数n: ");
scanf("%d", &n);
printf("1! + 2! + ... + %d! = %llu\n", n, sum_of.factorials(n));
return 0;
}
```
在这个程序中,`factorial`函数用于计算单个阶乘,而`sum_of.factorials`函数则通过循环将所有阶乘相加。请注意,对于较大的n值,由于阶乘增长非常快,可能会导致溢出,所以这个解决方案只适用于较小的输入范围。
阅读全文