第1章 设计性实验 实验题4:求连续整数阶乘的和。编写一个程序,对于给定的正整数n,求1!+2!+3!+...+n!,给出一种时间复杂度为O(n)的解法。(可以使用Dev C++进行程序编写和运行,运行成功后,把程序代码和运行截图输入答案框。)
时间: 2024-10-24 19:05:55 浏览: 17
C语言练习题:求1到10的阶乘之和简单实例
5星 · 资源好评率100%
设计性实验题4要求我们编写一个程序,用于计算从1到n的所有连续整数的阶乘之和。为了达到O(n)的时间复杂度,我们可以采用循环结构,并依次将每个整数i的阶乘加到总和上。这里是一个基本的C++程序示例:
```cpp
#include <iostream>
using namespace std;
// 计算阶乘
unsigned long long factorial(int n) {
if (n == 0 || n == 1)
return 1;
else
return n * factorial(n - 1);
}
int main() {
int n;
cout << "请输入一个正整数n: ";
cin >> n;
unsigned long long sum = 0;
for (int i = 1; i <= n; ++i) {
sum += factorial(i);
}
cout << "1! + 2! + ... + " << n << "! 的和是: " << sum << endl;
// 这里假设你已经得到了程序运行的结果,如屏幕截图或直接输出
// 此处省略了实际的运行结果展示
return 0;
}
```
在这个程序中,`factorial`函数递归地计算阶乘,而主循环负责累加阶乘值。由于每次循环都会计算一次阶乘,所以总的时间复杂度是线性的,即O(n)。
阅读全文