1.2.39 · HinglishIntroduction to Programming (Python)

Recursion depth limit — stack overflow

1,585 words7 min readRead in English

1.2.39 · Coding › Introduction to Programming (Python)


KYA ho raha hai


KYUN ek limit hoti hai


HOW — step by step kaise kaam karta hai

Ek infinite recursion consider karein (classic bug):

def boom(n):
    return boom(n + 1)   # no base case → never stops
boom(0)
Figure — Recursion depth limit — stack overflow

Limit ko inspect aur change karna


Worked examples


80/20 takeaway


Flashcards

Active function calls kaun sa data structure store karta hai?
Call stack (LIFO), jo har active call ke liye ek stack frame rakhti hai.
Stack frame kya cheezein rakhta hai?
Call ki local variables, arguments, aur return address (caller mein kahaan resume karna hai).
Recursion depth define karo.
Recursion ke dauran ek saath active (paused) stack frames ki sankhya.
CPython mein default recursion limit kya hai?
Lagbhag 1000 total frames.
Python bahut deep recursion par kaun sa error raise karta hai?
RecursionError: maximum recursion depth exceeded.
Python crash karne ki jagah soft limit kyun use karta hai?
Taaki OS ke hard, uncatchable stack overflow (segfault) se pehle ek catchable RecursionError raise ho sake.
Limit ko kaise read aur change karte hain?
sys.getrecursionlimit() aur sys.setrecursionlimit(N).
setrecursionlimit badhana dangerous kyun hai?
Bahut zyada value recursion ko real stack memory exhaust karne de sakti hai, jisse uncatchable segfault ho sakta hai.
Limit hit karne ke do robust fixes?
Ensure karo ki ek correct base case ho jo actually approach ki jaati hai, ya algorithm ko iteratively rewrite karo.
Limit exactly 1000 of YOUR calls kyun allow nahi karti?
Yeh saare frames count karti hai, including pre-existing ones, toh available depth ≈ 1000 − (already-stacked frames).

Recall Feynman: ek 12-saal ke bache ko explain karo

Socho tum dinner plates stack kar rahe ho. Har baar jab ek function khud ko call karta hai, tum ek aur plate pile par rakh dete ho — woh plate yaad rakhti hai function kya kar raha tha. Jab sabse deep wala function khatam hota hai, tum ek plate neeche le aate ho. Lekin agar ek function khud ko call karta rehta hai aur kabhi khatam nahi hota, tum plates stack karte rehte ho hamesha ke liye. Aakhirkar pile bahut zyada unchi ho jaati hai aur floor par crash ho jaati. Python smart hai: lagbhag 1000 plates par woh chillata hai "RUKO! RecursionError!" ki puri cheez gir jaaye. Ise sach mein fix karne ke liye, function ko ek clear finish line (base case) do jo woh actually reach kare — ya ek simple loop use karo jo sirf ek plate baar baar use karta hai.

Connections

Concept Map

pushes frame onto

each frame holds

increases

causes unbounded

frames never popped

exceeds

Python raises

fixed small memory 1-8 MB

prevented by

without limit would be

inspect and change via

counts all frames not per function

Function calls itself

Call stack LIFO

Locals args return address

Recursion depth

Base case missing or wrong

Depth climbs each call

Max recursion depth default 1000

RecursionError catchable

Stack overflow risk

OS-level segfault

sys.getrecursionlimit setrecursionlimit