Cho số hạng đầu a, công sai d của cấp số cộng ngược, và số lượng số hạng n. Tính tổng cấp số hòa:
H = 1/a + 1/(a+d) + 1/(a+2d) + ... + 1/(a+(n-1)d)
Ví dụ
a = 3, d = 2, n = 5
HP: 1/3, 1/5, 1/7, 1/9, 1/11
Tổng ≈ 0.878211.
Cách 1: Vòng lặp (Iterative)
float findSeriesSum(int a, int d, int n) {
float sum = 0;
for (float i = 1; i <= n; i++) {
float term = 1.0f / (a + (i - 1) * d);
sum += term;
}
return sum;
}
Cách 2: Đệ quy (Recursive)
float findSeriesSum(int a, int d, int n) {
if (n == 1) return 1.0f / a;
float term = 1.0f / (a + (n - 1) * d);
return term + findSeriesSum(a, d, n - 1);
}
Cài đặt đầy đủ
#include <iostream>
using namespace std;
float findSeriesSum(int a, int d, int n) {
float sum = 0;
for (float i = 1; i <= n; i++) {
float term = 1.0f / (a + (i - 1) * d);
sum += term;
}
return sum;
}
int main() {
int n = 5, a = 3, d = 2;
cout << "Tong HP la " << findSeriesSum(a, d, n);
return 0;
}
Output
Tong HP la 0.878211
Lưu ý
- Dùng
doubleđể chính xác hơn. - Đệ quy có thể gây tràn stack nếu
nlớn. - Không có công thức đóng dạng cho tổng cấp số hòa tổng quát.