← Back to Python Course | Chapter 4: Functions | Lesson 6 of 9

Python में Recursion

Recursion तब होता है जब कोई function किसी बड़ी समस्या को उसके ही छोटे हिस्से पर खुद को call करके हल करता है, जैसे रूसी nesting dolls जिनमें हर एक के अंदर एक छोटी doll होती है। यह सबसे छोटी doll तक पहुँचने पर रुक जाता है।
Syntax
python
def function_name(parameter):
    if base_condition:
        return base_value
    return function_name(smaller_parameter)

Recursion का परिचय

Recursion तब होता है जब कोई function उसी समस्या के छोटे version को हल करने के लिए खुद को call करता है; हर सही recursive function को एक base case चाहिए जो recursion को रोके, वरना यह बिना रुके खुद को call करता रहेगा।

उदाहरण: Introduction to Recursion

python
def countdown(n):
    if n == 0:
        return  # base case, stops the recursion
    print(n)
    countdown(n - 1)  # calls itself with a smaller value

countdown(3)

Base Case और Recursive Case

Base case समस्या का सबसे simple version है, जिसका जवाब बिना किसी और recursive call के सीधे दिया जाता है, जबकि recursive case function को दोबारा उस input के साथ call करता है जो उस base case के एक कदम और नज़दीक हो -- ये दोनों मिलकर यह guarantee करते हैं कि recursion आख़िरकार खत्म हो।

उदाहरण: Base Case and Recursive Case

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

print(factorial(5))

Fibonacci Sequence

Fibonacci sequence को recursively compute करना -- fib(n) = fib(n-1) + fib(n-2) -- लगभग बिल्कुल mathematical definition जैसा है, यही वजह है कि यह एक classic teaching example है, भले ही बिना अतिरिक्त caching के यह inefficient हो।

उदाहरण: Fibonacci Sequence

python
def fib(n):
    if n <= 1:
        return n  # base case
    return fib(n - 1) + fib(n - 2)  # recursive case, mirrors the math definition

print(fib(6))

Infinite Recursion

पहुँच योग्य base case के बिना, एक recursive function तब तक खुद को call करता रहता है जब तक Python का call stack खत्म न हो जाए, उस बिंदु पर यह चुपचाप सारी system memory खत्म करने के बजाय एक RecursionError raise करता है।

उदाहरण: Infinite Recursion

python
def bad_recursion(n):
    return bad_recursion(n)  # no base case

try:
    bad_recursion(1)
except RecursionError:
    print("RecursionError: maximum recursion depth exceeded")

Recursion बनाम Iteration

किसी भी recursive function को उसके बराबर एक loop में फिर से लिखा जा सकता है, और loops आमतौर पर तेज़ होते हैं और कम memory इस्तेमाल करते हैं क्योंकि वे हर call के लिए नया stack frame नहीं जोड़ते -- recursion को raw performance के लिए नहीं बल्कि स्वाभाविक रूप से self-similar समस्याओं में clarity के लिए चुना जाता है।

उदाहरण: Recursion vs Iteration

python
def factorial_recursive(n):
    return 1 if n == 0 else n * factorial_recursive(n - 1)  # calls itself until n reaches 0

def factorial_iterative(n):
    result = 1
    for i in range(1, n + 1):
        result *= i  # accumulates the product without recursive calls
    return result

print(factorial_recursive(5), factorial_iterative(5))
Related Topics
{# common_mistakes/chapter_summary/browser_support: on Hindi pages the view already swaps in the hi_ translation fields (or blanks these out if untranslated), so this renders correctly for both languages without a lang_code check here. #}

Login to run this code

C/C++/Java/PHP execution requires a free account. Your code is saved — you'll land right back in the editor after logging in.