1.2.39 · D1 · HinglishIntroduction to Programming (Python)

FoundationsRecursion depth limit — stack overflow

1,872 words9 min read↑ Read in English

1.2.39 · D1 · Coding › Introduction to Programming (Python) › Recursion depth limit — stack overflow

Is page par yeh assume kiya gaya hai ki aap kuch nahi jaante. Pehle hum "stack overflow" words bolne se pehle, har ek symbol, word, aur picture ko earn karenge jo parent note rely karta hai — ek ek karke, har cheez pichli par build hoti hui.


0. Function kya hota hai?

Ek vending machine ko picture karo jis par ek label laga hai. Aap button press karte ho (yeh hai call), woh andar kaam karta hai, aur aapko kuch wapas deta hai (yeh hai return value).

Humein yeh isliye chahiye kyunki recursion kuch nahi hai sirf ek machine ke barabar jo apna button khud dabaati hai.


1. Variable / Argument kya hota hai?

Figure — Recursion depth limit — stack overflow

Parent note mein boom(0) mein, 0 argument hai. boom ke andar, naam n ek cup hai jo 0 hold karta hai. Jab boom call karta hai boom(n + 1) ko, ek bilkul naya cup n naam ka banaaya jaata hai jo 1 hold karta hai. Dono cups share nahi karte — har call ko apna alag cup milta hai.


2. "Function khud ko call karta hai" ka matlab kya hai — recursion?

Do mirrors ko ek doosre ke saamne imagine karo: har reflection mein usi scene ki ek chhoti copy hoti hai, baar baar.


3. Stack kya hota hai (shape, memory nahi abhi)?

Figure — Recursion depth limit — stack overflow

Canteen mein ek spring-loaded plate dispenser ki tarah socho. Aap ek plate push karte ho upar; aap top plate ko pop karte ho. Aap beech se plate kabhi nahi kheench sakte.


4. Stack frame kya hota hai?

Toh boom(2) ki plate yaad rakhti hai: mera n hai 2, aur jab main done hoon, boom(1) ke andar us jagah wapas jao jahan usne mujhe call kiya tha.


5. Call stack aur recursion depth kya hai?

Figure — Recursion depth limit — stack overflow

Key subtlety: boom(n + 1) jaise recursive call mein, inner call pehle start hoti hai outer call ke return hone se. Toh koi plate kabhi pop nahi hoti — pile sirf badhti hai. Depth har call ke saath 1 se climb karti hai. Compare karo Iteration vs Recursion ke saath, jahan loop ek hi frame reuse karta hai aur pile height 1 par rehti hai.


6. Frames physically kahan rehte hain — stack memory vs heap?


7. sys aur sys.getrecursionlimit() kya hai?


8. RecursionError aur try / except kya hai?


9. Ek extra tool jo aap milenge — tail recursion


Prerequisite map

Function and calling

Arguments and variables

Recursion calls itself

Stack frame sticky note

Stack LIFO pile

Call stack

Recursion depth height

Stack memory small and fixed

Recursion limit 1000

RecursionError catchable

Exceptions and try except

Recursion depth limit stack overflow

Parent par wapas jaao: parent topic.


Equipment checklist

Self-test: right side cover karo aur har ek ka jawab do.

Vending-machine picture mein function call karne ka kya matlab hai?
Uska button press karna taaki woh run ho aur kuch wapas de.
Kya ek hi function ke do nested calls apne variable cups share karte hain?
Nahi — har call ko apna fresh set of local cups milta hai.
Ek sentence mein recursion kya hai?
Ek function jinke instructions mein khud ko call karna shamil hai.
Har recursion ke do halves kaunse hain?
Base case (ruko) aur recursive case (khud ko chhote problem par call karo).
LIFO ka full form kya hai aur calls isme kyun fit hoti hain?
Last In First Out; jo call sabse akhir mein enter hui woh pehli finish hoti hai aur return karti hai.
Stack frame teen cheezein kya hold karta hai?
Call ke arguments, local variables, aur return address.
Recursion depth kya hai?
Ek saath stacked frames ki sankhya — pile ki height.
Deep recursion ke liye stack memory dangerous kyun hai?
Yeh chhoti aur fixed hai (~1–8 MB), isliye badhti pile jagah khatam kar sakti hai.
Recursion limit ko kaun read aur set karta hai?
sys.getrecursionlimit() aur sys.setrecursionlimit(N).
Aap exactly 1000 apni calls kyun nahi use kar sakte?
Limit sab frames count karta hai, jinmein stack par pehle se wale bhi hain, isliye aapko roughly 1000 minus woh milte hain.
RecursionError segfault se better kyun hai?
Yeh try/except se catchable hai, isliye aap recover kar sakte ho silently crash hone ki bajaye.
Kya Python ki tail-call recursion stack growth avoid karti hai?
Nahi — Python mein koi tail-call optimization nahi hai, isliye stack abhi bhi grow karta hai.