用递归求Sn=1!+2!+…n!两个函数 n小于等于20,大于等于1
时间: 2024-12-16 18:23:58 浏览: 43
为了使用递归计算阶乘(`n!`),我们需要定义一个函数来处理基本情况和递归情况。对于阶乘的定义,`n! = n * (n - 1)!`,其中 `0! = 1` 是基本情况。
以下是一个简单的C语言函数,用于计算从1到n的阶乘之和(`Sn`):
```c
#include <stdio.h>
// 阶乘函数,基本情况和递归调用
unsigned long long factorial(int n) {
if (n == 0 || n == 1) { // 基本情况
return 1;
} else {
return n * factorial(n - 1); // 递归调用
}
}
// 计算阶乘和之和
unsigned long long sumFactorials(int n) {
unsigned long long Sn = 0;
for (int i = 1; i <= n; i++) {
Sn += factorial(i);
}
return Sn;
}
int main() {
int n;
printf("请输入一个1到20之间的整数:");
scanf("%d", &n);
// 检查输入是否有效
if (n < 1 || n > 20) {
printf("输入无效,请确保在1到20之间。\n");
return 1;
}
unsigned long long result = sumFactorials(n);
printf("1! + 2! + ... + %d! = %llu\n", n, result);
return 0;
}
```
在这个程序中,我们首先定义了`factorial()`函数用于计算单个阶乘,然后在`sumFactorials()`函数中循环调用`factorial()`并累加结果。在主函数`main()`中,用户会被提示输入一个数字,如果输入不在指定范围内,程序会显示错误消息。
阅读全文
相关推荐












