1.2.38 · D1 · HinglishIntroduction to Programming (Python)

FoundationsClassic recursion — factorial, Fibonacci, binary search

3,088 words14 min read↑ Read in English

1.2.38 · D1 · Coding › Introduction to Programming (Python) › Classic recursion — factorial, Fibonacci, binary search

Is page par assume kiya gaya hai ki aap kuch nahi jaante. Parent page ka har symbol neeche unpack kiya gaya hai, ek aisi order mein jahan har idea sirf usse pehle wale ideas pe lean karta hai.


0. Woh picture jis par sab kuch tika hai

Kisi bhi symbol se pehle, dekho ki recursion kya karta hai.

Figure — Classic recursion — factorial, Fibonacci, binary search

1. Ek variable aur symbol =

Picture: ek box jiski name-tag n hai aur andar 3 baitha hai.

Topic ko kyun chahiye: har recursive function mein ek input box hota hai (usually n, lo, hi, ya target naame). Trace follow karne ke liye yeh jaanna zaroori hai ki ek naam sirf us waqt jo bhi box mein hai, usi ki taraf point karta hai.


2. Symbol n aur "chhota" ka matlab

Picture: §0 mein tall box ki height. "Chhota subproblem" simply matlab hai ek chhota box — , ya , ya list ka ek chhota slice.

Topic ko kyun chahiye: recursion tabhi terminate hoti hai jab har call strictly chhoti hoti hai. Agar box kabhi nahi shrink karta, toh aap chhote base box tak kabhi nahi pahunchte, aur pile forever badhti rehti hai.


3. Chaar arithmetic symbols +, -, * (×), /

Parent page par har formula sirf chaar operations se bana hai. Yeh rahe, zero se.

Topic ko kyun chahiye: n - 1 (subtract) se factorial aur binary search problem ko chhota banate hain; F_{n-1} + F_{n-2} (add) poora Fibonacci rule hai — do chhote answers ko jodte hain.

Parent factorial ko multiplications ki chain ki tarah likhta hai:

Topic ko kyun chahiye: factorial ek product hai, aur iska base case empty product hai. Is idea ke bina base case arbitrary lagta hai.


4. Factorial symbol !

Picture: blocks ka ek staircase jo saath multiply hote hain.

Figure — Classic recursion — factorial, Fibonacci, binary search

5. Subscripts aur Fibonacci symbols

Picture: boxes ki ek row label ki hui, har ek mein ek Fibonacci number rakha hai.

Topic ko kyun chahiye: kyunki rule do boxes peeche jaata hai, aapko do known starting boxes chahiye () — yahi exactly "two base cases" hai jis par parent zor deta hai.


6. Lists, indices, aur [ ] notation

Figure — Classic recursion — factorial, Fibonacci, binary search

7. Floor division // — kyun hamen / ke saath iska bhi zaroorat hai

Topic ko kyun chahiye: binary search hamesha middle slot par jump karta hai, aur slots whole numbers hote hain — toh yeh / nahi, // use karta hai.


8. Comparisons: ==, <, >

Picture: ek balance scale. arr[mid] < target baayin taraf jhukta hai → value bahut chhoti hai → answer sorted list mein aur daayein hona chahiye.

Topic ko kyun chahiye: har base case ek comparison hai — if n == 0, if lo > hi, if arr[mid] == target. Har ek ek sawaal hai jo decide karta hai "ruko, ya chhote mein recurse karo."


9. Functions aur words def, return, "call"

Picture: ek vending machine. Aap inputs daalo (3), go dabao (call), aur ek value bahar aati hai (return). Ek recursive call matlab machine apna khud ka button ek chhote input ke saath dabati hai.

Topic ko kyun chahiye: recursion literally matlab hai "ek function jo khud ko call karta hai." return ke bina, chhota answer kabhi §0 ki chain mein upar wapas nahi jaata.


10. Call stack — jahan "pile up then unwind" rehta hai

Figure — Classic recursion — factorial, Fibonacci, binary search

Topic ko kyun chahiye: yeh explain karta hai ki factorial mein multiplications kyun wait karti hain, phir bottom-up combine hoti hain — stack topic ki hidden memory hai.


11. Growth symbols: , , aur

Picture: ek dheere badhne wala curve hai (halving fast hai); ek rocket hai (repeated multiplication). Same axis, wildly alag climbs.

Topic ko kyun chahiye: yahi teen symbols hain jisse parent ka summary table factorial (), binary search (), aur naive Fibonacci () compare karta hai.


12. Recurrence notation

Topic ko kyun chahiye: in recurrences ko unroll karna hi woh tarika hai jisse parent aur derive karta hai. recursion hai jo apni khud ki cost recursively describe kar raha hai — bilkul fitting.


Prerequisite map

Neeche diagram ek flowchart hai: har rounded label is page ka ek idea hai, aur ek arrow matlab hai "arrow ki tail wala idea, head wale idea se pehle chahiye." Arrows ko "feeds into" ki tarah padhiye. Koi bhi path upar se neeche follow karo aur aap safe learning order mein chal rahe ho: basic symbols left/top par, teen recursion problems beech mein, cost language neeche.

Variable and assign =

Function def call return

Input n and smaller

Recursion big idea

Add subtract multiply divide

Factorial n!

Fibonacci

Binary search

Floor division //

Subscript Fn

List index lo hi mid

Comparisons == < >

Base cases

Call stack frames

Theta log phi and T of n

Time cost table


Equipment checklist

Khud test karo — right side cover karo aur har ek ka jawaab do.

n = n - 1 actually kya karta hai?
Box n padhta hai, 1 ghatata hai, aur result wapas n mein store karta hai (assignment, equality nahi).
= aur == mein kya fark hai?
= ek value store karta hai; == poochhta hai ki kya do values equal hain (True/False).
Number line par + aur - ka kya matlab hai?
+ daayein jaata hai (amounts saath rakhna); - baayin jaata hai (hatana).
Fibonacci + kyun use karta hai?
Har term usse pehle wale do ka sum hota hai: .
ka kya matlab hai aur binary search ise kyun use karta hai?
ka aadha; har step list ka aadha hissa phek deta hai.
kyun hota hai?
Yeh empty product hai — kuch bhi multiply nahi karne par 1 milta hai, woh value jo kuch nahi badlati.
mein subscript ka kya matlab hai?
Sequence mein position (-waan Fibonacci number), times nahi.
arr[mid] mein mid ek value hai ya position?
Ek position (index); arr[mid] us slot mein rehne wali value laata hai.
mid ke liye / ki jagah // kyun use karte hain?
Indices whole numbers hone chahiye; // round down karta hai taaki aap real slot par land karo, jabki / 2.5 de sakta hai.
Stack frame kya hota hai?
Ek box jisme ek call ke variables aur uska return spot hota hai; frames pile up hote hain phir pop hote hain.
RecursionError kyun hoti hai?
Calls kabhi base case tak nahi pahunchti, toh frames forever pile up hote hain jab tak memory khatam na ho jaaye.
kya count karta hai?
Kitni baar aap ko 1 tak pahunchne se pehle aadha kar sakte hain.
kya express karta hai?
Running time input size ke saath kaise badhti hai, constants ignore karte hue, yeh shape batata hai.
Recurrence kya describe karta hai?
Constant kaam karna phir half-size problem solve karna — ke peeche yahi pattern hai.

Connections