1174. 求和c++
时间: 2025-05-05 21:18:04 浏览: 26
### 使用不同方式在 C++ 中实现求和
#### 递归法求和
对于给定的一个正整数 \( n \),可以利用递归来计算从 1 到 \( n \) 的累加和。这种方法通过不断调用自身来解决问题中的子问题,直到达到基本情况为止。
```cpp
#include <iostream>
using namespace std;
int cal_sum(const int n) {
if (n == 1) {
return 1;
}
return n + cal_sum(n - 1);
}
int main() {
int num = 0;
cin >> num;
int sum = 0;
sum = cal_sum(num);
cout << "the sum is " << sum << endl;
system("pause");
return 0;
}
```
此代码展示了如何定义一个名为 `cal_sum` 的递归函数用于求解自然数序列之和[^2]。
#### 字符串内数字字符求和
当面对的是包含非数值字符在内的字符串时,则可以通过遍历整个字符串并将其中的每一个可识别为数字的部分转换成相应的整型值再相加以获得总和。
```cpp
#include<cstdio>
#include<iostream>
#include<string>
using namespace std;
int main(){
string inputString;
int totalSum=0;
getline(cin, inputString); // 支持多字节输入
for(char ch : inputString){
if(ch >= '0' && ch <= '9'){
totalSum += ch-'0';
}
}
printf("%d\n",totalSum);
return 0;
}
```
上述程序能够处理任意长度的混合字母与数字组成的字符串,并输出这些数字所代表的实际数值之和[^3]。
#### 并行化求数组元素之和
为了提高性能,在现代计算机上执行大规模数据集上的操作时考虑采用并行计算是非常重要的。C++ 提供了标准模板库(STL)以及 C++17 开始引入的技术特性使得我们可以更方便地编写高效的并发应用程序。
下面的例子说明了怎样借助 OpenMP 来加速数组中浮点数类型的累积运算:
```cpp
#include <vector>
#include <omp.h>
double parallel_sum(const vector<double>& numbers) {
double local_sum = 0.0;
#pragma omp parallel for reduction(+:local_sum)
for(size_t i = 0; i < numbers.size(); ++i){
local_sum += numbers.at(i);
}
return local_sum;
}
```
这段代码片段实现了基于OpenMP框架下的简单并行求和逻辑,适用于较大规模的数据集合以充分利用多核处理器的优势[^1]。
阅读全文
相关推荐




