C Language in Hindi – Recursion

recursion in c in hindi

Recursion in C in Hindi

Recursion वह प्रक्रिया है जो अस्तित्व में आती है जब एक फ़ंक्शन छोटी समस्या पर काम करने के लिए खुद की एक copy बुलाता है। कोई भी फ़ंक्शन जो स्वयं को call करता है उसे recursion फ़ंक्शन कहा जाता है, और ऐसे फ़ंक्शन call को recursive calls कहा जाता है। recursion में कई संख्या में recursive calls शामिल हैं। हालांकि, पुनरावृत्ति की termination की condition को लागू करना महत्वपूर्ण है। recursion कोड iterative कोड से short है, हालांकि इसे समझना मुश्किल है।

Recursion को सभी समस्या पर लागू नहीं किया जा सकता है, लेकिन यह उन कार्यों के लिए अधिक उपयोगी है जिन्हें समान sub-tasks के संदर्भ में परिभाषित किया जा सकता है। उदाहरण के लिए, पुनरावर्तन को sorting, searching और traversal समस्याओं पर लागू किया जा सकता है।

फ़ंक्शन call हमेशा overhead होने के बाद से recursion की तुलना में iterative अधिक कुशल होती हैं। किसी भी समस्या को पुनरावर्ती रूप से हल किया जा सकता है, इसे पुनरावृति से भी हल किया जा सकता है। हालांकि, कुछ समस्याएं recursion द्वारा हल किए जाने के लिए सबसे उपयुक्त हैं, उदाहरण के लिए, हनोई का टॉवर, fibonacci series, factorial finding, आदि।

निम्नलिखित उदाहरण में, एक संख्या के factorial की गणना करने के लिए recursion का उपयोग किया जाता है।

  1. #include <stdio.h>  
  2. int fact (int);  
  3. int main()  
  4. {  
  5.     int n,f;  
  6.     printf("Enter the number whose factorial you want to calculate?");  
  7.     scanf("%d",&n);  
  8.     f = fact(n);  
  9.     printf("factorial = %d",f);  
  10. }  
  11. int fact(int n)  
  12. {  
  13.     if (n==0)  
  14.     {  
  15.         return 0;  
  16.     }  
  17.     else if ( n == 1)  
  18.     {  
  19.         return 1;  
  20.     }  
  21.     else   
  22.     {  
  23.         return n*fact(n-1);  
  24.     }  
  25. }  

Output

Enter the number whose factorial you want to calculate?5

factorial = 120 

 

Recursive Function in c in hindi

एक recursive function task को subtasks में विभाजित करके कार्य करता है। फ़ंक्शन में परिभाषित एक termination की condition है जो कुछ विशिष्ट subtask से संतुष्ट है। इसके बाद, recursion बंद हो जाता है और अंतिम परिणाम फ़ंक्शन से वापस आ जाता है।

जिस मामले में फ़ंक्शन की recursion नहीं होती है उसे base case कहा जाता है जबकि ऐसे instances जहां फ़ंक्शन अपने आप को एक subtask करने के लिए कॉल करता रहता है, recursive केस कहलाता है। इस format का उपयोग करके सभी पुनरावर्ती functions को लिखा जा सकता है।

किसी भी recursion function को लिखने के लिए pseudocode नीचे दिया गया है।

  1. if (test_for_base)  
  2. {  
  3.     return some_value;  
  4. }  
  5. else if (test_for_another_base)  
  6. {  
  7.     return some_another_value;  
  8. }  
  9. else  
  10. {  
  11.     // Statements;  
  12.     recursive call;  
  13. }  

Example of recursion in C

Let’s see an example to find the nth term of the Fibonacci series.

  1. #include<stdio.h>  
  2. int fibonacci(int);  
  3. void main ()  
  4. {  
  5.     int n,f;  
  6.     printf("Enter the value of n?");  
  7.     scanf("%d",&n);  
  8.     f = fibonacci(n);  
  9.     printf("%d",f);  
  10. }  
  11. int fibonacci (int n)  
  12. {  
  13.     if (n==0)  
  14.     {  
  15.     return 0;  
  16.     }  
  17.     else if (n == 1)  
  18.     {  
  19.         return 1;   
  20.     }  
  21.     else  
  22.     {  
  23.         return fibonacci(n-1)+fibonacci(n-2);  
  24.     }  
  25. }  

Output

Enter the value of n?12 

144 

Memory allocation of Recursive method in C in hindi

प्रत्येक पुनरावर्ती कॉल memory में उस पद्धति की एक नई copy बनाता है। एक बार कुछ डेटा method द्वारा वापस आ जाने के बाद, copy को मेमोरी से हटा दिया जाता है। चूंकि फ़ंक्शन के अंदर घोषित सभी variable और अन्य सामग्री stack में संग्रहीत होते हैं, इसलिए प्रत्येक पुनरावर्ती कॉल पर एक अलग stack बनाए रखा जाता है। एक बार जब इसी फ़ंक्शन से मान लौटाया जाता है, तो stack नष्ट हो जाता है। recursion में प्रत्येक पुनरावर्ती कॉल पर मूल्यों को हल करने और track करने में बहुत complexity शामिल है। इसलिए हमें stack को बनाए रखने और stack में परिभाषित variable के मूल्यों को track करने की आवश्यकता है।

हमें recursive functions के memory आवंटन को समझने के लिए निम्नलिखित उदाहरण पर विचार करें।

  1. int display (int n)  
  2. {  
  3.     if(n == 0)  
  4.         return 0; // terminating condition  
  5.     else   
  6.     {  
  7.         printf(“%d”,n);  
  8.         return display(n-1); // recursive call  
  9.     }  

Leave a Reply

DMCA.com Protection Status