ในปัญหานี้ เราได้รับตัวเลข n ซึ่งเป็นเทอมที่ n ของอนุกรม 1/(1*2) + 1/(2*3) +…+ 1/(n*(n+1)) งานของเราคือสร้างโปรแกรมเพื่อค้นหาผลรวมของซีรีส์
มาดูตัวอย่างเพื่อทำความเข้าใจปัญหากัน
ป้อนข้อมูล
n = 3
ผลผลิต
0.75
คำอธิบาย − ผลรวม =1/(1*2) + 1/(2*3) + 1/(3*4) =½ + ⅙+ 1/12 =(6+2+1)/12 =9/12 =¾ =0.75
วิธีแก้ปัญหาอย่างง่ายคือการใช้ลูป และค่าสัญจรของแต่ละองค์ประกอบของอนุกรม แล้วบวกเข้ากับค่าผลรวม
อัลกอริทึม
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.
ตัวอย่าง
โปรแกรมเพื่อแสดงการทำงานของโซลูชันของเรา
#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; }
ผลลัพธ์
Sum of the series 1/(1*2) + 1/(2*3) + 1/(3*4) + 1/(4*5) + ... is 0.833333
วิธีแก้ปัญหานี้ไม่ได้ผลมากนักเนื่องจากใช้การวนซ้ำ
วิธีที่มีประสิทธิภาพในการแก้ปัญหาคือการใช้สูตรทั่วไปสำหรับผลรวมของอนุกรม
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)
ตัวอย่าง
โปรแกรมเพื่อแสดงการทำงานของโซลูชันของเรา
#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; }
ผลลัพธ์
Sum of the series 1/(1*2) + 1/(2*3) + 1/(3*4) + 1/(4*5) + ... is 0.833333