इस समस्या में, हमें तीन संख्याएँ a, d, और n दिए गए हैं। हमारा काम सी ++ में हार्मोनिक श्रृंखला का योग खोजने के लिए एक प्रोग्राम बनाना है।
हार्मोनिक प्रगति एक श्रृंखला है जिसका प्रतिलोम एक समान्तर श्रेणी होगी। अर्थात। यदि एक हार्मोनिक प्रगति के लिए A1, A2, A3.. An, एक अंकगणितीय प्रगति 1/A1, 1/A2, 1/A3 है।
तो, एक सामान्य HP है
1/a, 1/(a+d), 1/(a+2d), … 1/(a + nd)
जहाँ 1/a पहला पद है। और d उल्टे AP का सामान्य अंतर है।
समस्या का विवरण - यहां, हमें पहला पद a, उभयनिष्ठ अंतर d और पदों की संख्या n दी जाएगी। एचपी का और हमें इसका योग निकालने की जरूरत है।
समस्या को समझने के लिए एक उदाहरण लेते हैं
इनपुट
a = 3, d = 2, n = 5
आउटपुट
0.878211
स्पष्टीकरण
एचपी , ⅕, 1/7, 1/9, 1/11 है।
Sum = ⅓ + ⅕ + 1/7 + 1/9 + 1/11 = 0.878211
समाधान दृष्टिकोण
हम इस nवें पद की पुनरावृति करेंगे और HP के प्रत्येक पद का मान ज्ञात करेंगे और इसे योगवार में जोड़ देंगे। और अंत में sumVal लौटाएं।
एल्गोरिदम
आरंभ करें - समवैल =0, टर्म =0;
- चरण 1 - लूप के लिए i -> 1 से n
- चरण 1.1 - पद ज्ञात कीजिए, पद =1/( a + (i-1)*(d).
- चरण 1.2 - समवैल, समवैल +=टर्म अपडेट करें।
- चरण 2 - समवैल प्रिंट करें।
हमारे समाधान की कार्यप्रणाली को दर्शाने वाला कार्यक्रम
उदाहरण
#include <iostream> using namespace std; float findSeriesSum(int a, int d, int n){ float sumVal = 0; float term = 0; for(float i = 1; i <= n; i++){ term = (1.0)/(float)(a + (i-1)*d); sumVal += term; } return sumVal; } int main(){ int n = 5, a = 3, d = 2; cout<<"The sum of HP is "<<findSeriesSum(a, d, n); return 0; }
आउटपुट
The sum of HP is 0.878211
एक और तरीका योग खोजने के लिए रिकर्सन फ़ंक्शन का उपयोग कर सकता है।
हमारे समाधान की कार्यप्रणाली को दर्शाने वाला कार्यक्रम
उदाहरण
#include <iostream> using namespace std; float findSeriesSum(int a, int d, int n){ if(n == 1){ return (float)(1.0)/a; } float term = (1.0)/ (float)(a + (n-1)*d); return term + findSeriesSum(a, d, n-1); } int main(){ int n = 5, a = 3, d = 2; cout<<"The sum of HP is "<<findSeriesSum(a, d, n); return 0; }
आउटपुट
The sum of HP is 0.878211