求1~n的连续整数和。(利用递归求此程序,并求运行时间)用c++
时间: 2024-09-20 19:04:03 浏览: 35
C 代码 实现一些简单的算法来处理简单和 广义连续分数.rar
在C++中,我们可以使用递归来计算1到n的连续整数之和。递归函数的基本思路是将大问题分解成小问题,直到达到基本情况,然后逐层返回结果。对于这个场景,基本情况就是当n等于1时,和为1;否则,和为n加上前一个数的和。
下面是一个简单的递归函数实现:
```cpp
#include <iostream>
int sum(int n) {
if (n == 1) // 基本情况
return 1;
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);
long long end_time = std::chrono::high_resolution_clock::now(); // 记录结束时间
std::cout << "1到" << n << "的连续整数和为: " << result << "\n";
std::cout << "运行时间为: "
<< std::chrono::duration_cast<std::chrono::microseconds>(end_time - start_time).count()
<< "微秒\n";
return 0;
}
```
递归的时间复杂度是O(n),因为每个数字都会被处理一次。然而,由于每次递归都需要额外的函数调用开销,实际运行时间会比简单循环长一些。在实际情况中,如果需要频繁计算,可能会考虑使用非递归的方式,如迭代。
阅读全文