酷代码 AI
菜单
服务商

C++实现求不大于n的正整数阶乘的和

以下是使用 C++ 解决求不大于 `n` 的正整数的阶乘的和的代码: ```cpp #include <iostream> using namespace std; // 计算阶乘的函数 int factorial(int num) { int result = 1; // 从 1 到 num 累乘得到阶乘 for (int i = 1; i <= num; ++i) { result *= i; } return result; } int main() { int n; // 读取输入的正整数 n cin >> n; int sum = 0; // 遍历从 1 到 n 的每个数 for (int i = 1; i <= n; ++i) { // 计算当前数的阶乘并累加到总和中 sum += factorial(i); } // 输出阶乘的和 cout << sum << endl; return 0; } ``` ### 代码解释 1. **`factorial` 函数**:该函数接受一个整数 `num` 作为参数,通过一个 `for` 循环从 1 到 `num` 进行累乘,最终返回 `num` 的阶乘。 2. **`main` 函数**: - 从标准输入读取一个正整数 `n`。 - 初始化一个变量 `sum` 用于存储阶乘的和。 - 使用 `for` 循环遍历从 1 到 `n` 的每个数,调用 `factorial` 函数计算当前数的阶乘,并将其累加到 `sum` 中。 - 最后输出 `sum` 的值。 ### 复杂度分析 - **时间复杂度**:$O(n^2)$,因为对于每个数 `i`,计算其阶乘的时间复杂度为 $O(i)$,总的时间复杂度为 $1 + 2 + 3 + \cdots + n = \frac{n(n + 1)}{2}$,即 $O(n^2)$。 - **空间复杂度**:$O(1)$,只使用了常数级的额外空间。 ######[AI问答 | 509点数解答 | 2026-03-28 20:41:08]

相关提问
本站限时免费提问中
实用工具查看更多
Linux在线手册 [开发类]
Jquery在线手册 [开发类]
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]