1.2.38 · HinglishIntroduction to Programming (Python)

Classic recursion — factorial, Fibonacci, binary search

1,736 words8 min readRead in English

1.2.38 · Coding › Introduction to Programming (Python)


The two parts every recursion MUST have


1. Factorial

Scratch se recurrence derive karo. WHAT hai ? Yeh hai times uske neeche sab cheez ka product: To — yahi hai recursive case. WHY base case ? Ek empty product hota hai (kuch se multiply karna kuch nahi badalta), aur yeh chain ko rokta hai.

def factorial(n):
    if n == 0:          # base case
        return 1
    return n * factorial(n - 1)   # recursive case: trust the smaller answer

2. Fibonacci

WHY do base cases? Recurrence do steps peeche jaati hai, to tumhe do known starting values chahiye, warna tum se bhi neeche recurse kar lete.

def fib(n):
    if n < 2:                 # base cases: F0=0, F1=1
        return n
    return fib(n - 1) + fib(n - 2)
Figure — Classic recursion — factorial, Fibonacci, binary search

3. Binary Search (recursive)

Time bound derive karo. Agar elements ke liye kaam hai: (ek comparison, phir half problem). Unrolling: .

def binary_search(arr, target, lo=0, hi=None):
    if hi is None:
        hi = len(arr) - 1
    if lo > hi:                  # base case: empty range -> not found
        return -1
    mid = (lo + hi) // 2
    if arr[mid] == target:       # base case: found it
        return mid
    elif arr[mid] < target:
        return binary_search(arr, target, mid + 1, hi)   # search right half
    else:
        return binary_search(arr, target, lo, mid - 1)   # search left half


Recall Feynman: ek 12-saal ke bachche ko samjhao

Socho tumhe ek giant dictionary mein ek word dhundhna hai. Tum beech mein kholte ho: agar tumhara word pehle aata hai, to doosra half faad do aur sirf pehle mein dekho; agar baad mein, to pehla half faad do. Baar baar half karte raho — tum ise bahut fast dhundh lete ho. Yahi hai binary search. Recursion ek line of people jaisi hai jo ek question peeche pass karte hain: "Mujhe nahi pata, lekin agar peeche waala mujhe bataye, to main bas 5 se multiply kar dunga." Har insaan agla poochta hai, jab tak aakhiri insaan easy answer nahi jaanta () aur usse aage pass karta hai. Fibonacci hai "agla number = pichle do ka sum," lekin agar tum bina answers likhe wahi choti choti questions baar baar poochte raho, to bahut time waste hoga — to unhe note karo (memoize karo)!


Flashcards

Har recursive function mein kaunse do parts hone chahiye?
Ek base case (recursion rokta hai) aur ek recursive case (khud ko chote input par call karta hai).
Factorial ke liye base case kyun hai?
Ek empty product 1 ke barabar hota hai, aur yeh recursive chain ko rokta hai.
Factorial ke liye recurrence?
, with .
Fibonacci ko do base cases kyun chahiye?
Recurrence do steps peeche jaati hai (), to do starting values zaroori hain.
Naive recursive Fibonacci ki time complexity kya hai aur kyun?
exponential — yeh same subproblems ko kai baar recompute karta hai.
Recursive Fibonacci ko fast kaise banate ho?
Memoize (cache) karo computed values ko → .
Binary search ke liye precondition kya hai?
Array sorted hona chahiye.
Binary search kyun hai?
Har step search space ko half karta hai: .
Binary search ke base cases?
lo > hi (range empty → not found) aur arr[mid]==target (found).
Python mein missing/unreachable base case kaunsa error cause karta hai?
RecursionError: maximum recursion depth exceeded (stack overflow).
Machine pending recursive calls yaad rakhne ke liye kaunsa data structure use karti hai?
The call stack (stack frames).

Connections

Concept Map

must have

must have

missing causes

uses

stops chain in

instance

instance

instance

base case 0! = 1

needs two base cases

naive suffers

Recursion: function calls itself

Base case: return directly

Recursive case: smaller input

Call stack: pile then unwind

RecursionError: stack overflow

Factorial n! = n times n-1 factorial

Fibonacci Fn = Fn-1 + Fn-2

Binary search on smaller list

Exponential recomputation