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

C प्रोग्राम: रिकर्सिव फंक्शन का उपयोग करके दी गई संख्या को उलटें

रिकर्सिव फंक्शन वह है जो अपने बॉडी में स्वयं को फिर से कॉल करता है।

उदाहरण के लिए, fact() फंक्शन जो पूर्णांक 'N' का फैक्टोरियल गणना करता है, जो 1 से N तक सभी पूर्णांकों का गुणनफल है।

  • fact() जब 1 (या 0) आर्गुमेंट के साथ कॉल होता है, तो 1 लौटाता है।
  • अन्यथा, यह n * fact(n-1) लौटाता है, यह तब तक चलता है जब तक 'n' 1 के बराबर नहीं हो जाता।
Fact(5) = 5 * fact(4)
        = 5 * 4 * fact(3)
        = 5 * 4 * 3 * fact(2)
        = 5 * 4 * 3 * 2 * fact(1)
        = 5 * 4 * 3 * 2 * 1
        = 120

उदाहरण 1: फैक्टोरियल के लिए रिकर्सिव फंक्शन

#include <stdio.h> 

int fact(int n);  // प्रोटोटाइप

int main() {
    int n, f;
    printf("Enter a number: ");
    scanf("%d", &n);
    f = fact(n);
    printf("Factorial value = %d", f);
    return 0;
}

int fact(int n) {
    if(n == 1 || n == 0)
        return 1;
    else
        return n * fact(n - 1);
}

आउटपुट

Enter a number: 5
Factorial value = 120

उदाहरण 2: रिकर्सन का उपयोग करके संख्या उलटना

#include <stdio.h> 

int sum = 0, rem;

int revNumFunction(int num) {
    if(num) {
        rem = num % 10;           // अंतिम अंक प्राप्त करें
        sum = sum * 10 + rem;     // रिवर्स नंबर बनाएं
        revNumFunction(num / 10); // रिकर्सिव कॉल
    } else {
        return sum;
    }
}

int main() {
    int num, revNum;
    printf("Enter number:\n");
    scanf("%d", &num);
    revNum = revNumFunction(num);
    printf("The number after reverse: %d", revNum);
    return 0;
}

आउटपुट

Enter number: 1357
The number after reverse is: 7531

व्याख्या (संख्या उलटने के लिए)

  • sum और rem ग्लोबल वेरिएबल्स हैं (स्टेट बनाए रखने के लिए)।
  • प्रत्येक रिकर्सिव कॉल में:
    1. rem = num % 10 - अंतिम अंक निकालें
    2. sum = sum * 10 + rem - रिवर्स नंबर बनाएं
    3. revNumFunction(num / 10) - शेष अंकों के साथ रिकर्सन
  • बेस केस: जब num == 0, sum लौटाएं।

बेहतर दृष्टिकोण: ग्लोबल वेरिएबल्स के बिना

int reverseNumber(int num, int rev) {
    if(num == 0)
        return rev;
    return reverseNumber(num / 10, rev * 10 + num % 10);
}

// कॉल: reverseNumber(1357, 0) -> 7531

रिकर्सन के लाभ और हानि

लाभहानि
कोड सरल और सुंदरस्टैक ओवरफ्लो का जोखिम (गहरी रिकर्सन)
जटिल समस्याओं के लिए सहजओवरहेड: फंक्शन कॉल लागत
ट्री/ग्राफ ट्रैवर्सल के लिए प्राकृतिकडीबग करना कठिन
  1. रिकर्सिव फंक्शन का उपयोग करके संख्याओं का GCD खोजने का C प्रोग्राम रिकर्सिव फंक्शन का उपयोग करके संख्याओं का GCD खोजने का C प्रोग्राम

    समस्या C प्रोग्रामिंग भाषा में रिकर्सिव फंक्शन का उपयोग करके दो दी गई संख्याओं के लिए महत्तम सामान्य भाजक (GCD) खोजें। समाधान रिकर्सिव फंक्शन का उपयोग करके दो दी गई संख्याओं के लिए महत्तम सामान्य भाजक (GCD) खोजने का समाधान निम्नानुसार है: एल्गोरिथम रिकर्सिव फंक्शन का उपयोग करके दो दी गई संख्याओं क

  1. C प्रोग्राम: संख्या को शब्दों में बदलें C प्रोग्राम: संख्या को शब्दों में बदलें

    समस्या विवरण एक संख्यात्मक स्ट्रिंग (अधिकतम 4 अंक: 0-9999) दी गई है, इसे अंग्रेजी शब्दों में बदलें। उदाहरण इनपुटआउटपुट 1234one thousand two hundred thirty four 7777seven thousand seven hundred seventy seven 100one hundred 15fifteen स्थान मान प्रणाली संख्या: 1111 स्थान: हजार सौ दहाई इकाई

  1. C प्रोग्राम: प्लस परफेक्ट नंबर (आर्मस्ट्रांग संख्या) जांचें C प्रोग्राम: प्लस परफेक्ट नंबर (आर्मस्ट्रांग संख्या) जांचें

    प्लस परफेक्ट नंबर (आर्मस्ट्रांग संख्या) एक संख्या प्लस परफेक्ट (आर्मस्ट्रांग) है यदि इसके अंकों के nवें घात का योग (n = अंकों की संख्या) संख्या के बराबर हो। सूत्र n अंकों की संख्या के लिए: Σ(अंकⁿ) = संख्या उदाहरण संख्याअंकगणनायोगआर्मस्ट्रांग? 1631,6,31³+6³+3³ = 1+216+27244नहीं 3713,7,13³+7³+1³