पायथन के मूल तत्व: प्रोग्रामिंग में आपकी पहली कदम

Back to Learn

पायथन मूल बातें: प्रोग्रामिंग में आपके पहले कदम

Lesson 7 of 16 • 10 XP

Keep your place in this quest

Log in or sign up for free to subscribe, follow lesson progress, and access more learning content.

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

इसे ऐसे सोचें जैसे कि दो मुहँ किए आईनों में देखना। आप एक प्रतिबिंब के अंदर प्रतिबिंब देखते हैं, जो लगातार चलता रहता है… जब तक कि वह अंततः फीका न पड़ जाए। रेकर्शन में, यह "फीका पड़ना" बहुत महत्वपूर्ण है — इसे हम base case कहते हैं, और यह दोहराव को रोकता है।

रेकर्शन कैसे काम करता है

एक recursive फ़ंक्शन:

  1. जाँचता है कि उसे रुकना चाहिए या नहीं — यह base case है।
  2. यदि नहीं, तो यह खुद को कॉल करता है, लेकिन समस्या का एक छोटा या सरल संस्करण लेकर।

समस्याओं को छोटे-छोटे हिस्सों में बार-बार तोड़ कर, रेकर्शन समस्या के सबसे सरल रूप तक पहुँचता है, उसे हल करता है, और फिर सभी कॉल्स से लौटते हुए उत्तर को पुनः विकसित करता है।

उदाहरण: फैक्टोरियल कैलकुलेशन

आइए किसी संख्या का फैक्टोरियल लेते हैं।
गणित में, n का factorial (जिसे n! लिखा जाता है) का मतलब है:

n! = n × (n-1) × (n-2) × ... × 1

उदाहरण के लिए:

5! = 5 × 4 × 3 × 2 × 1 = 120

यहाँ इसका recursive वर्शन Python में:

def factorial(n):
    if n == 0:  # base case
        return 1
    return n * factorial(n - 1)

print(factorial(5))  # 120

यहाँ क्या हो रहा है:

  • यदि n 0 है, तो हम base case तक पहुँच गए हैं — परिभाषा के अनुसार, 0! बराबर है 1 के।
  • अन्यथा, n को factorial(n - 1) (समस्या का एक छोटा संस्करण) से गुणा करें।
  • यह तब तक दोहराता रहता है जब तक कि base case न पहुंच जाए।

रेकर्शन क्यों इस्तेमाल करें?

रेकर्शन हो सकता है:

  • सुंदर और संक्षिप्त उन समस्याओं के लिए जो स्वाभाविक रूप से पुनरावृत्त संरचना वाली हों।
  • गणितीय समस्याओं (जैसे factorials, Fibonacci संख्याएँ) के लिए उपयुक्त।
  • ट्री जैसे डेटा (फाइल सिस्टम, परिवार वृक्ष, गेम AI खोज) नेविगेट करने के लिए आवश्यक।

कभी-कभी रेकर्शन लूप्स की जगह भी ले सकता है, हालांकि यह हमेशा सबसे कुशल विकल्प नहीं होता।

टिप: रेकर्शन को समझना अक्सर आसान होता है जब आप इसे सोचें कि “समस्या को छोटे-छोटे संस्करणों में बाँटते रहें जब तक कि आप उसे सीधे हल न कर सकें।”

सामान्य गलतियाँ

महत्वपूर्ण!: हमेशा base case परिभाषित करें — इसके बिना, फ़ंक्शन स्वयं को अनंत बार कॉल करता रहेगा जब तक Python एक RecursionError नहीं फेंकता।

समस्याएँ प्राप्त होने पर:

  • “RecursionError: maximum recursion depth exceeded” → आप base case तक नहीं पहुंचे या आपका base case गलत है।
  • यदि रेकर्शन समस्या के लिए बहुत जटिल लगे, तो लूप आज़माएँ।

रेकर्शन शुरू में जटिल लग सकता है, लेकिन यह आपकी कोडिंग को ज्यादा स्मार्ट और अनुकूल बनाने का एक तरीका है। कुछ समस्याओं पर अभ्यास करने के बाद, आप देखेंगे कि यह न केवल शक्तिशाली है बल्कि आपका कोड आश्चर्यजनक रूप से छोटा और सुंदर भी बना सकता है।