Computer >> Máy Tính >  >> Lập trình >> C ++

Tổng của Chuỗi 1 / (1 * 2) + 1 / (2 * 3) + 1 / (3 * 4) + 1 / (4 * 5) + ... trong C ++

Trong bài toán này, chúng ta được cho một số n là số hạng thứ n của dãy số 1 / (1 * 2) + 1 / (2 * 3) +… + 1 / (n * (n + 1)). Nhiệm vụ của chúng tôi là tạo một chương trình để tìm tổng của chuỗi.

Hãy lấy một ví dụ để hiểu vấn đề,

Đầu vào

n = 3

Đầu ra

0.75

Giải thích - tổng =1 / (1 * 2) + 1 / (2 * 3) + 1 / (3 * 4) =½ + ⅙ + 1/12 =(6 + 2 + 1) / 12 =9/12 =¾ =0,75

Một giải pháp đơn giản cho vấn đề là sử dụng vòng lặp. Và giá trị đi lại cho mỗi phần tử của chuỗi. Sau đó, thêm chúng vào giá trị tổng.

Thuật toán

Initialize sum = 0
Step 1: Iterate from i = 1 to n. And follow :
   Step 1.1: Update sum, sum += 1/ ( i*(i+1) )
Step 2: Print sum.

Ví dụ

Chương trình minh họa hoạt động của giải pháp của chúng tôi,

#include <iostream>
using namespace std;
double calcSeriesSum(int n) {
   double sum = 0.0;
   for (int i = 1; i <= n; i++)
   sum += ((double)1/(i*(i+1)));
   return sum;
}
int main() {
   int n = 5;
   cout<<"Sum of the series 1/(1*2) + 1/(2*3) + 1/(3*4) + 1/(4*5) + ... is "<<calcSeriesSum(n);
   return 0;
}

Đầu ra

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

Giải pháp này không hiệu quả nhiều vì nó sử dụng các vòng lặp.

Một cách tiếp cận hiệu quả để giải quyết vấn đề là sử dụng công thức chung cho tổng của chuỗi.

The series is 1/(1*2) + 1/(2*3) + 1/(3*4) + 1/(4*5) + …
n-th terms is 1/n(n+1).
an = 1/n(n+1)
an = ((n+1) - n) /n(n+1)
an = (n+1)/n(n+1) - n/ n(n+1)
an = 1/n - 1/(n+1)
sum of the series is
sum = 1/(1*2) + 1/(2*3) + 1/(3*4) + 1/(4*5) + …
Changing each term as in above formula,
sum = 1/1 - ½ + ½ - ⅓ + ⅓ - ¼ + ¼ -⅕ + …. 1/n - 1/(n+1)
sum = 1 - 1/(n+1)
sum = (n+1 -1) / (n+1) = n/(n+1)

Ví dụ

Chương trình minh họa hoạt động của giải pháp của chúng tôi,

#include <iostream>
using namespace std;
double calcSeriesSum(int n) {
   return ((double)n/ (n+1));
}
int main() {
   int n = 5;
   cout<<"Sum of the series 1/(1*2) + 1/(2*3) + 1/(3*4) + 1/(4*5) + ... is "<<calcSeriesSum(n);
   return 0;
}

Đầu ra

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