Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ผลรวมอนุกรม 1/(1×2) + 1/(2×3) + ... + 1/(n×(n+1)) ใน C++


ภาพรวมปัญหา

หาผลรวมของอนุกรม 1/(1×2) + 1/(2×3) + 1/(3×4) + ... + 1/(n×(n+1))

ตัวอย่าง

Input: n = 3
Output: 0.75
Explanation: 1/2 + 1/6 + 1/12 = 6/12 + 2/12 + 1/12 = 9/12 = 3/4 = 0.75

วิธีแก้ปัญหา

วิธีลูปธรรมดา - O(n)

double sum = 0;
for (int i = 1; i <= n; i++)
    sum += 1.0 / (i * (i+1));

วิธีสูตรคณิตศาสตร์ - O(1)

ใช้การแยกเศษส่วน: 1/(i(i+1)) = 1/i - 1/(i+1)

อนุกรมทีเลสโคป (Telescoping): 1 - 1/(n+1) = n/(n+1)

ตัวอย่างโค้ด C++

#include <iostream>
using namespace std;

double calcSeriesSum(int n) {
    return (double)n / (n + 1);
}

int main() {
    int n = 5;
    cout << "Sum = " << calcSeriesSum(n);
    return 0;
}

ผลลัพธ์

Sum of the series 1/(1*2) + 1/(2*3) + 1/(3*4) + 1/(4*5) + ... is 0.833333