用C语言制作代码:求1+2!+3!+…+N!的和 正整数N(N〈=20) 1+2!+3!+…+N!的和+(结果为整数形式)
时间: 2023-11-13 15:04:33 浏览: 138
可以使用循环和递归两种方法来求解1+2!+3!+…+N!的和。
方法一:循环
可以使用一个循环来计算每个数的阶乘,并将它们相加。具体步骤如下:
1. 定义一个变量sum,用于存储和的值,初始化为0。
2. 使用一个循环,从1到N,依次计算每个数的阶乘,并将它们加到sum中。
3. 返回sum的值。
代码如下:
```
#include <stdio.h>
int factorial(int n) {
int result = 1;
for (int i = 1; i <= n; i++) {
result *= i;
}
return result;
}
int sum_of_factorials(int n) {
int sum = 0;
for (int i = 1; i <= n; i++) {
sum += factorial(i);
}
return sum;
}
int main() {
int n = 5;
int sum = sum_of_factorials(n);
printf("1+2!+3!+...+%d! = %d\n", n, sum);
return 0;
}
```
方法二:递归
可以使用递归来计算每个数的阶乘,并将它们相加。具体步骤如下:
1. 定义一个递归函数factorial,用于计算n的阶乘。
2. 在递归函数中,如果n等于1,则返回1;否则,返回n乘以factorial(n-1)的值。
3. 定义一个递归函数sum_of_factorials,用于计算1+2!+3!+…+N!的和。
4. 在递归函数中,如果n等于1,则返回1;否则,返回factorial(n)加上sum_of_factorials(n-1)的值。
5. 返回sum_of_factorials(N)的值。
代码如下:
```
#include <stdio.h>
int factorial(int n) {
if (n == 1) {
return 1;
} else {
return n * factorial(n-1);
}
}
int sum_of_factorials(int n) {
if (n == 1) {
return 1;
} else {
return factorial(n) + sum_of_factorials(n-1);
}
}
int main() {
int n = 5;
int sum = sum_of_factorials(n);
printf("1+2!+3!+...+%d! = %d\n", n, sum);
return 0;
}
```
阅读全文