पायथन रिकर्सन (पुनरावर्ती कार्य)

इस ट्यूटोरियल में, आप एक पुनरावर्ती फ़ंक्शन (एक फ़ंक्शन जो स्वयं को कॉल करता है) बनाना सीखेंगे।

पुनरावृत्ति क्या है?

रिकर्सन अपने आप में कुछ परिभाषित करने की प्रक्रिया है।

एक भौतिक दुनिया का उदाहरण दो समानांतर दर्पणों को एक दूसरे के सामने रखना होगा। उनके बीच की कोई भी वस्तु पुनरावर्ती रूप से परिलक्षित होगी।

पायथन पुनरावर्ती कार्य

पायथन में, हम जानते हैं कि एक फ़ंक्शन अन्य कार्यों को कॉल कर सकता है। फ़ंक्शन को स्वयं कॉल करना भी संभव है। इस प्रकार के निर्माण को पुनरावर्ती कार्यों के रूप में कहा जाता है।

निम्नलिखित छवि नामक एक पुनरावर्ती फ़ंक्शन के काम को दर्शाता है recurse

पायथन में पुनरावर्ती कार्य

एक पूर्णांक के भाज्य को खोजने के लिए एक पुनरावर्ती कार्य का एक उदाहरण निम्नलिखित है।

किसी संख्या का गुणनखंड उस संख्या से सभी पूर्णांकों का गुणनफल होता है। उदाहरण के लिए, 6 का भाज्य (6 के रूप में निरूपित) 1 * 2 * 3 * 4 * 5 * 6 = 720 है।

एक पुनरावर्ती कार्य का उदाहरण

 def factorial(x): """This is a recursive function to find the factorial of an integer""" if x == 1: return 1 else: return (x * factorial(x-1)) num = 3 print("The factorial of", num, "is", factorial(num))

आउटपुट

 3 का गुट 6 है

उपरोक्त उदाहरण में, factorial()एक पुनरावर्ती कार्य है क्योंकि यह खुद को कहता है।

जब हम इस फ़ंक्शन को सकारात्मक पूर्णांक के साथ कहते हैं, तो यह पुन: संख्या को घटाकर पुन: कॉल करेगा।

प्रत्येक फ़ंक्शन संख्या को गुणन के साथ उसके नीचे गुणा करता है जब तक कि यह एक के बराबर न हो। इस पुनरावर्ती कॉल को निम्नलिखित चरणों में समझाया जा सकता है।

 factorial (3) # 3 कॉल के साथ 3 3 * factorial (2) # 2nd कॉल 2 3 * 2 * factorial (1) # 3 कॉल के साथ 1 3 * 2 * 1 # 3 कॉल से रिटर्न नंबर = 1 3 * 2 के रूप में # 2 कॉल से वापसी 6 # 1 कॉल से वापसी

आइए एक छवि को देखें जो कि चल रही प्रक्रिया के चरण-दर-चरण प्रक्रिया को दिखाती है:

एक पुनरावर्ती तथ्यात्मक कार्य का कार्य

जब संख्या कम हो जाती है तो हमारी पुनरावृत्ति समाप्त हो जाती है। इसे आधार स्थिति कहा जाता है।

प्रत्येक पुनरावर्ती फ़ंक्शन में एक आधार स्थिति होनी चाहिए जो पुनरावृत्ति को रोकती है या फिर फ़ंक्शन स्वयं को असीम रूप से कॉल करता है।

पायथन दुभाषिया अनंत पुनरावृत्ति से बचने में मदद करने के लिए पुनरावृत्ति की गहराई को सीमित करता है, जिसके परिणामस्वरूप स्टैक ओवरफ्लो होता है।

डिफ़ॉल्ट रूप से, पुनरावृत्ति की अधिकतम गहराई 1000 है। यदि सीमा पार की जाती है, तो इसका परिणाम होता है RecursionError। आइए ऐसी ही एक स्थिति को देखें।

 def recursor(): recursor() recursor()

आउटपुट

 ट्रेसबैक (सबसे हालिया कॉल अंतिम): फ़ाइल "", पंक्ति 3, फ़ाइल में "", पंक्ति 2, फ़ाइल में "", पंक्ति 2, फ़ाइल में "", पंक्ति 2, में (पिछले पंक्ति में 996 बार दोहराया गया ) RecursionError: अधिकतम पुनरावर्तन गहराई पार हो गई

पुनर्मुद्रण के लाभ

  1. पुनरावर्ती कार्य कोड को स्वच्छ और सुरुचिपूर्ण बनाते हैं।
  2. एक जटिल कार्य को पुनरावृत्ति का उपयोग करके सरल उप-समस्याओं में तोड़ा जा सकता है।
  3. अनुक्रमित पीढ़ी कुछ नेस्टेड पुनरावृत्ति का उपयोग करने की तुलना में पुनरावृत्ति के साथ आसान है।

पुनरावृत्ति के नुकसान

  1. कभी-कभी पुनरावृत्ति के पीछे के तर्क का पालन करना कठिन होता है।
  2. पुनरावर्ती कॉल महंगे (अक्षम) हैं क्योंकि वे बहुत अधिक मेमोरी और समय लेते हैं।
  3. पुनरावर्ती कार्यों को डीबग करना कठिन है।

दिलचस्प लेख...