Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Tổng cấp số hòa (Harmonic Series) trong C++

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 n lớn.
  • Không có công thức đóng dạng cho tổng cấp số hòa tổng quát.