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

डेटा संरचना में रिकर्सन के सिद्धांत


रिकर्सन एक प्रक्रिया है जिसके द्वारा एक फंक्शन खुद को कॉल करता है। हम बड़ी समस्या को छोटी उप-समस्याओं में हल करने के लिए रिकर्सन का उपयोग करते हैं। एक बात ध्यान रखनी है कि यदि प्रत्येक उप-समस्या एक ही तरह के पैटर्न का पालन कर रही है, तो केवल हम रिकर्सिव दृष्टिकोण का उपयोग कर सकते हैं।

एक रिकर्सिव फंक्शन के दो अलग-अलग भाग होते हैं। बेस केस और रिकर्सिव केस। बेस केस का उपयोग रिकर्सन के कार्य को समाप्त करने के लिए किया जाता है। यदि बेस केस परिभाषित नहीं है, तो फंक्शन अनंत बार रिकर्सन करेगा (सैद्धांतिक रूप से)।

कंप्यूटर प्रोग्राम में, जब हम एक फंक्शन कॉल करते हैं, तो प्रोग्राम काउंटर का मान फंक्शन क्षेत्र में कूदने से पहले आंतरिक स्टैक में संग्रहीत होता है। कार्य पूरा होने के बाद, यह पते को पॉप आउट करता है और इसे प्रोग्राम काउंटर में असाइन करता है, फिर कार्य फिर से शुरू करता है। रिकर्सिव कॉल के दौरान, यह पते को कई बार संग्रहीत करेगा, और अगले फंक्शन कॉल स्टेटमेंट पर कूद जाएगा। यदि एक बेस केस परिभाषित नहीं है, तो यह बार-बार रिकर्सन करेगा, और स्टैक में पता संग्रहीत करेगा। यदि स्टैक में कोई जगह नहीं बची है, तो यह "इंटरनल स्टैक ओवरफ्लो" त्रुटि उठाएगा।

रिकर्सिव कॉल का एक उदाहरण किसी संख्या का फैक्टोरियल खोजना है। हम देख सकते हैं कि संख्या n का फैक्टोरियल n! वही है n * (n-1)!, फिर यह n * (n - 1) * (n - 2)! के समान है। इसलिए यदि फैक्टोरियल एक फंक्शन है, तो इसे बार-बार कॉल किया जाएगा, लेकिन आर्गुमेंट 1 से घटता जाता है। जब आर्गुमेंट 1 या 0 होता है, तो यह 1 लौटाएगा। यह रिकर्सन का बेस केस हो सकता है।

उदाहरण

#include 
using namespace std;
long fact(long n){
    if(n <= 1)
        return 1;
    return n * fact(n-1);
}
int main(){
    cout << "Factorial of 6: " << fact(6);
}

आउटपुट

Factorial of 6: 720
  1. डेटा स्ट्रक्चर में एडजेसेंसी लिस्ट डेटा स्ट्रक्चर में एडजेसेंसी लिस्ट

    ग्राफ एक नॉन-लीनियर डेटा स्ट्रक्चर है। यह नोड्स का उपयोग करके डेटा को दर्शाता है, और एज का उपयोग करके उनके संबंधों को। एक ग्राफ G के दो भाग होते हैं। वर्टेक्स, और एज। वर्टेक्स को सेट V द्वारा दर्शाया जाता है, और एज को सेट E के रूप में दर्शाया जाता है। तो ग्राफ नोटेशन G(V,E) है। आइए एक उदाहरण देखें त

  1. डेटा स्ट्रक्चर में न्यूनतम स्पैनिंग ट्री डेटा स्ट्रक्चर में न्यूनतम स्पैनिंग ट्री

    एक स्पैनिंग ट्री एक अनडायरेक्टेड ग्राफ का एक सबसेट है जिसमें सभी वर्टेक्स न्यूनतम संख्या में एज द्वारा जुड़े होते हैं।यदि ग्राफ में सभी वर्टेक्स जुड़े हुए हैं, तो कम से कम एक स्पैनिंग ट्री मौजूद होती है। एक ग्राफ में एक से अधिक स्पैनिंग ट्री मौजूद हो सकती हैं।न्यूनतम स्पैनिंग ट्रीएक न्यूनतम स्पैनिंग

  1. डेटा स्ट्रक्चर में बाइनरी ट्री प्रतिनिधित्व डेटा स्ट्रक्चर में बाइनरी ट्री प्रतिनिधित्व

    यहां हम देखेंगे कि कंप्यूटर की मेमोरी में बाइनरी ट्री को कैसे दर्शाया जाए। प्रतिनिधित्व के लिए दो अलग-अलग तरीके हैं। ये सरणी और लिंक्ड लिस्ट का उपयोग करके हैं।मान लीजिए हमारे पास ऐसा एक ट्री है:सरणी प्रतिनिधित्व लेवल ऑर्डर फैशन का उपयोग करके एलिमेंट्स को स्कैन करके ट्री डेटा को स्टोर करता है। तो यह