इस समस्या में, हमें दो पूर्णांक m और n दिए गए हैं। हमारा काम है पहले n प्राकृत संख्याओं का m-th योग ज्ञात करना।
समस्या का विवरण: हम n प्राकृत संख्याओं का योग m गुणा पाएंगे। योग सूत्र द्वारा दिया जाता है,
अगर (एम> 1),
योग (एन, एम) =योग (योग (एन, (एम -1)), 1)
अगर (एम =1)
योग(n, m) =योग(n, 1) =n प्राकृत संख्याओं का योग
समस्या को समझने के लिए एक उदाहरण लेते हैं,
इनपुट: एम =4, एन =2
आउटपुट: 231पी>
स्पष्टीकरण:
योग(2, 4) =योग (योग(2, 3), 1 )
=योग (योग (योग (2, 2), 1), 1 )
=योग (योग (योग (योग (2, 1), 1), 1), 1)
=योग (योग (योग (3, 1), 1), 1)
=योग (योग ( 6 , 1 ), 1)
=योग (21, 1)
=231
समाधान दृष्टिकोण -
समस्या का एक सरल समाधान दो नेस्टेड लूप का उपयोग करना है। बाहरी वाला m मानों के लिए होगा और आंतरिक मान n मानों के लिए होगा। हम n के मान को अपडेट करेंगे और हम n प्राकृत संख्या m बार के योग की गणना करेंगे।
एक अधिक प्रभावी दृष्टिकोण n प्राकृतिक संख्या के योग को बार-बार कॉल करना होगा और हर बार रिकर्सन किए जाने पर पिछली राशि के साथ मूल्य को अपडेट करना होगा।
एल्गोरिदम:
चरण 1: योग के साथ योग मान अपडेट करें =योग (एन, एम -1) * (योग (एन, एम -1) +1) / 2 यदि m का योग मान एक से अधिक है।
चरण 2: यदि m =1 का मान, वापसी योग =n * (n+1) /2.
चरण 3: वापसी राशि।
हमारे समाधान की कार्यप्रणाली को दर्शाने वाला कार्यक्रम,
उदाहरण
#include <iostream> using namespace std; int calcSumN(int n, int m) { if (m == 1) return (n * (n + 1) / 2); return (calcSumN(n, m-1) * (calcSumN(n, m-1) + 1) / 2); } int main() { int n = 4; int m = 6; cout<<m<<"-th summation of first "<<n<<" natural numbers is "<<calcSumN(n, m); return 0; }
आउटपुट
6-th summation of first 4 natural numbers is 125230148