用c语言写出用递归求Sn=1!+2!+3!+4!+5!+…+n!之值,其中n是一个数字的代码
时间: 2023-11-09 17:00:46 浏览: 99
以下是用递归求Sn=1!+2!+3!+4!+5!+…+n!之值的C语言代码:
```c
#include <stdio.h>
int factorial(int n) {
if (n == 0 || n == 1) {
return 1;
} else {
return n * factorial(n - 1);
}
}
int sum(int n) {
if (n == 1) {
return 1;
} else {
return factorial(n) + sum(n - 1);
}
}
int main() {
int n;
printf("请输入n的值:");
scanf("%d", &n);
printf("Sn的值为:%d\n", sum(n));
return 0;
}
```
相关问题
利用函数的递归调用,求 s = 1!+2!+3!+4!+5!+...+n!。其中n在主函数用input赋值。返回最后的计算结果s,并在命令行用fprintf函数输出“s = 1!+2!+3!+4!+5!+...+n!= ”。 参考指令 funciton s=test3(n)
```python
def factorial(n):
if n == 0:
return 1
else:
return n * factorial(n-1)
def calculate_sum(n):
s = 0
for i in range(1, n+1):
s += factorial(i)
return s
n = int(input("请输入n的值:"))
s = calculate_sum(n)
print("s = 1!+2!+3!+4!+5!+...+n! =", s)
```
C语言利用函数的递归调用求解s=1!+2!+3!+4!......+n
可以利用递归来求解阶乘,然后在主函数中调用这个递归函数来求解1!~n!的和。具体实现如下:
```c
#include <stdio.h>
int factorial(int n) {
if (n == 1) { // 递归到底部
return 1;
} else {
return n * factorial(n - 1); // 递归调用
}
}
int main() {
int n, i, sum = 0;
printf("请输入一个正整数n:");
scanf("%d", &n);
for (i = 1; i <= n; i++) {
sum += factorial(i); // 求1!~n!的和
}
printf("1!+2!+3!+...+%d! = %d\n", n, sum);
return 0;
}
```
当用户输入n为5时,程序的输出结果为:
```
请输入一个正整数n:5
1!+2!+3!+...+5! = 153
```
阅读全文