c++求1! + 2! + 3! +….+20![其中n!用调用递归函数实现,求和用循环体]
时间: 2023-11-24 09:50:40 浏览: 38
以下是C++求1! + 2! + 3! +….+20!的代码,其中n!用调用递归函数实现,求和用循环体:
```c++
#include <iostream>
using namespace std;
int factorial(int n) { //递归函数求n的阶乘
if (n == 0 || n == 1) {
return 1;
} else {
return n * factorial(n - 1);
}
}
int main() {
int sum = 0;
for (int i = 1; i <= 20; i++) {
sum += factorial(i); //累加每个数的阶乘
}
cout << "1! + 2! + 3! +….+20! = " << sum << endl;
return 0;
}
```
相关问题
c++用递归算法求 1!+2!+3! +...+n!
可以使用递归算法来解决这个问题,具体实现如下:
```c++
#include <iostream>
using namespace std;
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);
cout << "1!+2!+3!+...+" << n << "! = " << sum << endl;
return 0;
}
```
在这个程序中,我们定义了两个递归函数 `factorial` 和 `sum_of_factorials`。`factorial` 函数用于计算阶乘,`sum_of_factorials` 函数用于计算阶乘的和。在每个函数中,我们都有一个基线条件和一个递归条件。如果 `n` 的值小于或等于 1,我们将返回 1 作为基线条件。否则,我们将根据递归条件进行计算。在 `sum_of_factorials` 函数中,我们将先计算 n 的阶乘,然后将它加到 n-1 的阶乘和中。最后,在主函数中,我们将调用 `sum_of_factorials` 函数来计算 1!+2!+3!+...+n! 的值,并将其打印出来。
用函数的递归调用求1!+2!+3!+…+10!
以下是使用函数递归调用求1!+2!+3!+…+10!的Python代码:
```python
def factorial(n):
if n == 1:
return 1
else:
return n * factorial(n-1)
sum = 0
for i in range(1, 11):
sum += factorial(i)
print("1!+2!+3!+...+10!的和为:", sum)
```
运行结果为:
```
1!+2!+3!+...+10!的和为: 4037913
```
解释:
首先定义一个递归函数factorial(n),用于计算n的阶乘。当n等于1时,返回1;否则返回n乘以factorial(n-1)的结果。
然后使用for循环计算1!+2!+3!+...+10!的和,将每个阶乘的结果累加到变量sum中。
最后输出sum的值,即为1!+2!+3!+...+10!的和。