求1~n的连续整数和。c++(利用递归求此程序,并求运行时间)
时间: 2024-10-09 09:15:17 浏览: 43
在C++中,可以使用递归来计算从1到n的所有连续整数之和。递归函数的基本思路是将大问题分解成小问题并解决,直到问题简化到可以直接返回结果的状态。对于这个特定的问题,我们可以定义一个名为`sum`的递归函数,它接受一个整数参数`n`:
```cpp
#include <iostream>
int sum(int n) {
// 递归终止条件:当n等于1时,直接返回n
if (n == 1)
return n;
// 将当前值加到前一个数的和上,形成新的总和
else
return n + sum(n - 1);
}
int main() {
int n;
std::cout << "请输入一个正整数: ";
std::cin >> n;
long long start_time = std::chrono::high_resolution_clock::now(); // 记录开始时间
int result = sum(n);
std::chrono::long long end_time = std::chrono::high_resolution_clock::now(); // 记录结束时间
std::chrono::duration<double> elapsed_seconds = end_time - start_time; // 计算运行时间
std::cout << "1到" << n << "的连续整数之和是: " << result << std::endl;
std::cout << "运行时间约为: " << elapsed_seconds.count() << "秒" << std::endl;
return 0;
}
```
在这个程序中,我们首先获取用户输入的整数`n`,然后记录开始时间。接着计算从1到`n`的和并得到结果,同时记录结束时间。最后输出和以及运行时间。
**注意**: 使用递归计算可能会有性能问题,特别是当`n`很大时,因为每次递归都会创建一个新的函数调用栈帧,这可能导致堆栈溢出。实际应用中,使用循环通常更高效。
阅读全文