C语言给定一个整数 n 和求 (0!+1!+2!+……+n!)
时间: 2024-10-08 09:01:52 浏览: 40
在C语言中,计算从0到n的所有正整数阶乘之和需要特别处理0的阶乘(0! = 1),因为0的阶乘是一个特殊的约定。你可以使用循环结构,并结合条件判断,逐步累加每个数的阶乘。下面是一个简单的函数示例:
```c
#include <stdio.h>
unsigned long long factorial_sum(int n) {
unsigned long long result = 1; // 初始化结果为1(0!)
for (int i = 1; i <= n; ++i) {
if (i == 0) continue; // 跳过0,防止重复计数
result += factorial(i); // 计算并累加阶乘
}
return result;
}
unsigned long long factorial(int n) {
if (n == 0 || n == 1)
return 1; // 阶乘的基本情况:0! = 1, 1! = 1
else
return n * factorial(n - 1); // 递归计算阶乘
}
int main() {
int n;
printf("请输入一个非负整数: ");
scanf("%d", &n);
unsigned long long sum = factorial_sum(n);
printf("(0! + 1! + 2! + ... + %d!) = %llu\n", n, sum);
return 0;
}
```
这个程序首先定义了一个`factorial`函数用于计算阶乘,然后在`factorial_sum`函数中使用循环调用`factorial`,累加得到总和。
阅读全文