Recursion in C in Hindi – C में रिकर्सन क्या है? और प्रकार

इस लेख "Recursion in C in Hindi" में, जानें सी में रिकर्सन क्या है?, इसका सिंटैक्स, उदाहरण, रिकर्सन के प्रकार और कैसे काम करता है, आदि।

Recursion in C in Hindi: सी प्रोग्रामिंग में, यदि कोई फ़ंक्शन अंदर से खुद को कॉल करता है, तो उसी फ़ंक्शन को रिकर्सन (Recursion) कहा जाता है। यह वह प्रक्रिया है जो तब अस्तित्व में आती है जब कोई फ़ंक्शन किसी छोटी समस्या पर काम करने के लिए स्वयं की एक प्रति कॉल करता है।

पुनरावृत्त (iterative) प्रोग्रामिंग पर पुनरावर्ती (recursive) प्रोग्रामिंग का सबसे बड़ा लाभ यह है कि यह कोड लिखने का एक साफ और सरल तरीका प्रदान करता है। C प्रोग्रामिंग में रिकर्सन बहुत महत्वपूर्ण है, इसलिए इस लेख को पूरा पढ़ें।

नोट: रिकर्सन को अच्छी तरह से समझने के लिए C variables, Data types, और सी में Funciton होता है पहले समझें और नीचे दिए गए विडीओ से C भाषा को भी समझें:

C में रिकर्सन क्या है (Recursion in C in Hindi)

C में रिकर्सन क्या है (Recursion in C in Hindi)

सी भाषा में रिकर्सन एक ऐसी प्रक्रिया है जिसमें एक फ़ंक्शन स्वयं को प्रत्यक्ष या अप्रत्यक्ष रूप से कॉल करता है और संबंधित फ़ंक्शन को रिकर्सिव फ़ंक्शन कहा जाता है। यह एक ऐसी तकनीक है जिसमें एक फ़ंक्शन उस समस्या को हल करने के लिए फ़ंक्शन/कार्य के एक छोटे से हिस्से के साथ स्वयं को कॉल करता है।

मूल रूप से, Recursion एक प्रोग्रामिंग तकनीक है जो प्रोग्रामर को स्वयं के संदर्भ में संचालन को व्यक्त करने की अनुमति देती है। सी में, यह एक ऐसे फ़ंक्शन का रूप लेता है जो स्वयं को कॉल करता है।

अर्थात कोई भी फंक्शन जो खुद को कॉल करता है उसे रिकर्सिव फंक्शन (recursive function) कहलाता है, और ऐसे फंक्शन कॉल्स को recursive calls कहा जाता है। रिकर्सन में कई संख्या में पुनरावर्ती कॉल शामिल हैं।

  • Recursion जटिल समस्याओं को सरल या आसान समस्याओं में विभाजित करके प्रोग्रामर के जीवन को आसान बनाता है।
  • यह तकनीक जटिल समस्याओं को सरल समस्याओं में तोड़ने का एक तरीका प्रदान करती है जिन्हें हल करना आसान होता है।
  • कोई भी समस्या जिसे पुनरावर्ती रूप से हल किया जा सकता है, उसे पुनरावृत्त रूप से भी हल किया जा सकता है

रिकर्सन का सिंटेक्स (Syntax of Recursion in C)

पुनरावर्तन के लिए वाक्य रचना है:

void recursive_fun() //recursive function
{
    Base_case; // Stopping Condition
    
    recursive_fun(); //recursive call
}

int main()
{
   
   recursive_fun(); //function call
    
}

उपरोक्त C कोड उदाहरण में, मुख्य फ़ंक्शन के अंदर फ़ंक्शन कॉल सामान्य कॉल है, यह recursive_fun() फ़ंक्शन को कॉल करता है जिसके अंदर एक अन्य फ़ंक्शन कॉल recursive_fun() है; जिसे recursive call कहा जाता है और संपूर्ण recursive_fun() फ़ंक्शन recursive function है। Base_case रिकर्सिव फ़ंक्शन के लिए रुकने की स्थिति है।

रिकर्सन का उदाहरण (Example of Recursion in C)

निम्नलिखित उदाहरण में, दो संख्याओं को जोड़ने के सरल कार्य में तोड़कर संख्याओं की एक श्रृंखला को एक साथ जोड़ने के लिए recursion का उपयोग किया गिया है:

#include <stdio.h>

int sum(int tih);

int main() {
  int result = sum(7);
  printf("%d", result);
  return 0;
}

int sum(int tih) {
  if (tih > 0) {
    return tih + sum(tih - 3);
  } else {
    return 0;
  }
}

जब sum() फ़ंक्शन को कॉल किया जाता है, तो यह tih से छोटी सभी संख्याओं के योग में पैरामीटर tih जोड़ता है और परिणाम देता है। जब tih 0 हो जाता है, तो फ़ंक्शन केवल 0 लौटाता है।

चूंकि tih 0 होने पर फ़ंक्शन स्वयं को कॉल नहीं करता है, प्रोग्राम वहीं रुक जाता है और परिणाम लौटाता है।

Output:

12

रिकर्सन के प्रकार (Types of Recursion in C in Hindi)

सी रिकर्सन के प्रकार (Types of Recursion in C)

C प्रोग्रामिंग लैंग्वेज में दो प्रकार के रिकर्सन (recursion) होते हैं:

  1. डायरेक्ट रिकर्सन (Direct Recursion)
  2. इनडायरेक्ट रिकर्सन (Indirect Recursion)

आइए रिकर्सन के इन दोनो प्रकार को अच्छी तरह से समझते है –

सी डायरेक्ट रिकर्सन (Direct Recursion in C)

यदि कोई फ़ंक्शन स्वयं को कॉल करता है, तो इसे डायरेक्ट रिकर्सन के रूप में जाना जाता है। इसका परिणाम एक-चरणीय recursive call में होता है: फ़ंक्शन अपने स्वयं के फ़ंक्शन बॉडी के अंदर एक पुनरावर्ती कॉल (recursive call) करता है।

मूल रूप से, सी में प्रत्यक्ष रिकर्सन (Direct Recursion) तब होता है जब कोई फ़ंक्शन स्वयं को सीधे अंदर से कॉल करता है। ऐसे कार्यों को प्रत्यक्ष पुनरावर्ती कार्य भी कहा जाता है।

निम्नलिखित डायरेक्ट रिकर्सन की संरचना है:

function_01()
{
    //some code
    function_01();
    //some code
}

Direct recursion संरचना में, function_01 () निष्पादित होता है, और अंदर से, यह खुद को पुनरावर्ती रूप से कॉल करता है।

सी इनडायरेक्ट रिकर्सन (Indirect Recursion in C)

जब एक फ़ंक्शन को दूसरे फ़ंक्शन द्वारा एक परिपत्र तरीके से बुलाया जाता है, तो फ़ंक्शन को इनडायरेक्ट रिकर्सन फ़ंक्शन कहा जाता है।

मूल रूप से, C में इनडायरेक्ट रिकर्सन तब होता है जब एक फ़ंक्शन दूसरे फ़ंक्शन को कॉल करता है और यदि यह फ़ंक्शन पहले फ़ंक्शन को फिर से कॉल करता है। ऐसे फ़ंक्शन को indirect recursive functions भी कहा जाता है।

निम्नलिखित Indirect Recursion की संरचना है:

function_A()
{
    //some code
    function_A();
}

function_B()
{
    //some code
   function_A();
}

Indirect recursion संरचना में function_A() कार्यान्वयन करता है और function_B() को कॉल करता है। अभी कॉल करने के बाद, function_B निष्पादित करता है जहां इसके अंदर function_A के लिए कॉल है, जो कि पहला कॉलिंग फ़ंक्शन है।

रिकर्सन का फ़्लोचार्ट (Flowchart of Recursion in C)

रिकर्सन का फ़्लोचार्ट (Flowchart of Recursion in C)

उपरोक्त रिकर्सन फ़्लोचार्ट आरेख (diagram) में, एक recursive function है जिसके अंदर एक recursive call है जो समस्या की condition के true होने तक recursive function को कॉल करता है। यदि कंडीशन संतुष्ट हो जाती है, तो कंडीशन false होती है, और प्रोग्राम कंट्रोल शेष स्टेटमेंट्स के लिए जाता है और प्रोग्राम को रोक देता है।

रिकर्सन कैसे काम करता है (How Recursion work)?

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

उदाहरण से समझे:

void recurse()
{
    ... .. ...
    recurse();
    ... .. ...
}

int main()
{
    ... .. ...
    recurse();
    ... .. ...
}
रिकर्सन कैसे काम करता है (How Recursion work)?

मूल रूप से, रिकर्सिव फ़ंक्शन के body में दो मुख्य भाग होते हैं, यानी बेस केस (base case) और रिकर्सिव केस (recursive case)।

  • जब Recursive फ़ंक्शन निष्पादित किया जाता है, पहले, प्रोग्राम द्वारा बेस केस की जांच की जाती है।
  • यदि यह ture हो जाता है, तो फ़ंक्शन वापस आ जाता है और बाहर निकल जाता है; अन्यथा, recursive case को निष्पादित किया जाता है।
  • Recursive case के अंदर, हमारे पास एक recursive call है जो उस फ़ंक्शन को कॉल करता है जिसमें यह मौजूद है।

कार्यक्रम में रिकर्सन का प्रतिनिधित्व इस प्रकार है:

recursive_function()
{
    //base case
    if base_case = true;
    return;
    
    else
    //recursive case
    return code_for_recursion; //includes recursive call
}

रिकर्सन के लाभ (Advantages of Recursion in C)

यहाँ रिकर्सन के कुछ सबसे महत्वपूर्ण लाभ हैं:

  1. सी रिकर्सन कोड को छोटा बनाता है।
  2. रिकर्सन फ़ंक्शन की अनावश्यक कॉलिंग को कम करता है।
  3. एक ही समाधान को लगाते समय recursion अत्यंत उपयोगी है।
  4. यह सूत्र-आधारित समस्याओं और जटिल एल्गोरिदम को हल करने के लिए उपयोगी।
  5. ग्राफ़ और ट्री ट्रैवर्सल में उपयोगी है क्योंकि वे स्वाभाविक रूप से पुनरावर्ती हैं।
  6. Recursion समस्या को उप-समस्याओं में विभाजित करने और फिर उन्हें हल करने में मदद करता है, अनिवार्य रूप से विभाजित और जीतता है।

फ्री सी प्रोग्रामिंग कोर्स इन हिंदी

क्या आप मुफ्त में हिंदी भाषा में पूरी सी प्रोग्रामिंग सीखना चाहते हैं? यदि आपका उत्तर “हां” है, तो यहां हमारा पूरा सी भाषा पाठ्यक्रम है, नीचे की “सी कोर्स इन हिंदी” बटन पर क्लिक करके सीखना शुरू करें:

निष्कर्ष

रिकर्सन एक दिनचर्या है जो प्रत्यक्ष (direct) या अप्रत्यक्ष (indirect) रूप से खुद को बार-बार calls करता है। सी लैंग्वेज में डायरेक्ट कॉलिंग और इनडायरेक्ट कॉलिंग दो तरह की रिकर्सन होती है। कॉलिंग रिकर्सिव कॉल को संदर्भित करता है। विधि और फ़ंक्शन का उपयोग करके C भाषा में रिकर्सन (recursion) संभव होता है।

मुझे उम्मीद है कि यह लेख “Recursion in C in Hindi” आपको यह समझने में मदद करेगा कि C प्रोग्रामिंग लैंग्वेज में रिकर्सन क्या है, इसका सिंटैक्स, रिकर्सन का उदाहरण, इसके विभिन्न प्रकार और रिकर्सन कैसे काम करता है, आदि।

पिछला लेखThree Level Architecture of DBMS in Hindi (Schema)
अगला लेखObject Oriented Programming in Hindi (OOPs in Hindi)
वह एक पेशेवर वेब और ऐप डेवलपर और भारतीय ब्लॉगर हैं। वह लोगों की मदद करना और उनका मार्गदर्शन करना पसंद करते हैं। इसलिए वह इस ब्लॉग "ट्यूटोरियल इन हिंदी" में अपना ज्ञान हिंदी भाषा में साझा करते हैं। अगर आपको यह पोस्ट मददगार लगे तो इसे शेयर जरूर करें।

कोई जवाब दें

कृपया अपनी टिप्पणी दर्ज करें!
कृपया अपना नाम यहाँ दर्ज करें

19 − 10 =