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

C++ का उपयोग करके पेल संख्या ज्ञात करना


दिए गए समस्या में, हमें एक पूर्णांक n दिया गया है और हमें Pₙ ज्ञात करना है, यानी उस स्थिति में पेल संख्या। अब, जैसा कि हम जानते हैं, पेल संख्या एक श्रृंखला का हिस्सा है जो इस सूत्र द्वारा दी जाती है:

Pₙ = 2*Pₙ₋₁ + Pₙ₋₂

पहली दो शुरुआती संख्याओं के साथ:

P₀ = 0 और P₁ = 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; // दिया गया n
    cout << pell(n) << "\n"; // उस स्थिति पर पेल संख्या।
    return 0;
}

आउटपुट

70

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

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

इटरेटिव दृष्टिकोण

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

उदाहरण

#include <iostream>
using namespace std;

int main() {
    int n = 6; // दिया गया n।
    int p0 = 0; // pn-2 का प्रारंभिक मान।
    int p1 = 1; // pn-1 का प्रारंभिक मान।
    int pn; // हमारा उत्तर।
    if(n <= 2) // यदि n <= 2 तो हम n प्रिंट करते हैं।
        cout << n << "\n";
    else {
        for(int i = 2; i <= n; i++) { // हम दूसरी संख्या से n तक खोजने जा रहे हैं।
            pn = 2*p1 + p0;
            p0 = p1; // नए i के लिए pn-1, pn-2 बन जाता है।
            p1 = pn; // नए i के लिए pn, pn-1 बन जाता है।
        }
        cout << pn << "\n";
    }
    return 0;
}

आउटपुट

70

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

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

निष्कर्ष

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

  1. C++ में स्ट्रिंग के सबस्ट्रिंग्स की संख्या निकालना C++ में स्ट्रिंग के सबस्ट्रिंग्स की संख्या निकालना

    इस लेख में, आप एक दी गई स्ट्रिंग में बनने वाले सबस्ट्रिंग्स (गैर-खाली) की संख्या निकालने के दृष्टिकोण के बारे में जानेंगे।इनपुट: string = moon आउटपुट: 10 व्याख्या: सबस्ट्रिंग्स हैं m, o, o, n, mo, oo, on, moo, oon और moon। इनपुट: string = yellow आउटपुट: 21समाधान खोजने का दृष्टिकोणमान लें स्ट्रिंग की

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

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

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

    इस लेख में, हम एक सेट पर रिफ्लेक्सिव रिलेशंस की संख्या ज्ञात करने के दृष्टिकोणों की व्याख्या करेंगे। इस समस्या में, हमें संख्या n दी गई है, और n प्राकृतिक संख्याओं के एक सेट पर, हमें रिफ्लेक्सिव रिलेशंस की संख्या निर्धारित करनी है।रिफ्लेक्सिव रिलेशन - एक सेट A में एक रिलेशन को रिफ्लेक्सिव कहा जाता ह