Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

C++ . का उपयोग करके पेल नंबर खोजें

दी गई समस्या में, हमें एक पूर्णांक n दिया गया है, हमें Pn . खोजने की आवश्यकता है , यानी, उस स्थिति में पेल नंबर। अब, जैसा कि हम जानते हैं, पेल नंबर इस सूत्र द्वारा दी गई श्रृंखला का एक हिस्सा है -Pn =2*पी<उप>एन-1 + पी<उप>एन-2

पहली दो शुरुआती संख्याओं के साथ - P0 =0 और पी<उप>1 =1

समाधान खोजने के लिए दृष्टिकोण

अब हम इस समस्या को दो तरीकों से हल करेंगे:पुनरावर्ती और पुनरावृत्त।

पुनरावर्ती दृष्टिकोण

इस सूत्र में, हम पुनरावर्ती रूप से पेल नंबर के सूत्र को लागू करेंगे और n पुनरावृत्तियों को करेंगे।

उदाहरण

#include <iostream>

using namespace std;
int pell(int n) {
   if(n <= 2)
      return n;
   return 2*pell(n-1) + pell(n-2);
}
int main() {
   int n = 6; // given n
   cout << pell(n) <<"\n"; // Pell number at that position.
   return 0;
}

आउटपुट

70

उपरोक्त कोड की व्याख्या

इस दृष्टिकोण में, हम पेल (एन -1) और&पेल (एन -2) को कॉल करके रिकर्सन का उपयोग करते हैं जब तक कि एन 2 से कम या उसके बराबर न हो जाए क्योंकि हम जानते हैं कि 2 तक पेल नंबर दिए गए नंबर के समान हैं। उपरोक्त कार्यक्रम की समग्र समय जटिलता O(N) . है , जहां N दी गई संख्या है।

पुनरावर्ती दृष्टिकोण

इस दृष्टिकोण में, हम ऊपर के समान सूत्र का उपयोग करेंगे लेकिन एक पुनरावर्ती फ़ंक्शन के बजाय लूप के लिए संख्या का उपयोग करके गणना करेंगे।

उदाहरण

#include <iostream>

using namespace std;
int main() {
   int n = 6; // given n.
   int p0 = 0; // initial value of pn-2.
   int p1 = 1; // initial value of pn-1.
   int pn; // our answer.

   if(n <= 2) // if n <= 2 we print n.
      cout << n <<"\n";
   else {
      for(int i = 2; i <= n; i++) { // we are going to find from the second number till n.

         pn = 2*p1 + p0;
         p0 = p1; // pn-1 becomes pn-2 for new i.
         p1 = pn; // pn becomes pn-1 for new i.
      }

      cout << pn << "\n";
   }
   return 0;
}

आउटपुट

70

उपरोक्त कोड की व्याख्या

दिए गए प्रोग्राम में, हम 2 से n तक जा रहे हैं और pn-2 से pn-1 और pn-1 से pn तक के मानों को तब तक अपडेट कर रहे हैं जब तक हम n तक नहीं पहुंच जाते।

निष्कर्ष

इस लेख में, हमने पुनरावृत्ति और पुनरावृत्ति का उपयोग करके Nth पेल नंबर खोजने की समस्या को हल किया। हमने इस समस्या के लिए C++ प्रोग्राम और संपूर्ण दृष्टिकोण (सामान्य और कुशल) भी सीखा जिसके द्वारा हमने इस समस्या को हल किया। हम उसी प्रोग्राम को अन्य भाषाओं जैसे C, java, python, और अन्य भाषाओं में लिख सकते हैं।


  1. C++ का उपयोग करके एक स्ट्रिंग के सबस्ट्रिंग की संख्या ज्ञात करें

    इस लेख में, आप किसी दिए गए स्ट्रिंग में बनाए जा सकने वाले सबस्ट्रिंग (गैर-रिक्त) की संख्या को खोजने के तरीकों के बारे में जानेंगे। Input : string = “moon” Output : 10 Explanation: Substrings are ‘m’, ‘o’, ‘o’, ‘n’, ‘mo’, &lsqu

  1. C++ . का उपयोग करके स्टॉपिंग स्टेशनों की संख्या ज्ञात कीजिए

    बिंदु X और Y के बीच मध्यवर्ती ट्रेन स्टेशनों की संख्या n है। गिनें कि अलग-अलग तरीकों से ट्रेनों को s स्टेशनों पर रुकने के लिए व्यवस्थित किया जा सकता है जैसे कि कोई भी दो स्टेशन एक दूसरे के बगल में नहीं हैं। तो इस लेख में, हम स्टॉपिंग स्टेशनों की संख्या का पता लगाने के लिए हर संभव तरीके की व्याख्या क

  1. C++ का उपयोग करके सेट पर रिफ्लेक्सिव रिलेशंस की संख्या ज्ञात करें

    इस लेख में, हम एक सेट पर रिफ्लेक्सिव संबंधों की संख्या को खोजने के तरीकों की व्याख्या करेंगे। इस समस्या में, हमें संख्या n दी गई है, और n प्राकृत संख्याओं के समुच्चय पर, हमें प्रतिवर्ती संबंधों की संख्या निर्धारित करनी होगी। चिंतनशील संबंध − समुच्चय A में एक संबंध प्रतिवर्ती कहलाता है यदि (a, a) R