Bird
Raised Fist0
DSA Typescriptprogramming~5 mins

Recursion Concept and Call Stack Visualization in DSA Typescript - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is recursion in programming?
Recursion is when a function calls itself to solve smaller parts of a problem until it reaches a simple case it can solve directly.
Click to reveal answer
beginner
What is a base case in recursion?
A base case is the simplest situation in recursion where the function stops calling itself to avoid infinite loops.
Click to reveal answer
intermediate
How does the call stack work with recursion?
Each recursive call adds a new layer to the call stack. When a base case is reached, the stack starts to remove layers as functions finish and return results.
Click to reveal answer
intermediate
What happens if a recursive function has no base case?
Without a base case, the function keeps calling itself forever, causing a stack overflow error because the call stack grows too large.
Click to reveal answer
beginner
Explain the flow of a simple factorial function using recursion.
The factorial function calls itself with smaller numbers until it reaches 0 (base case). Then it multiplies the numbers as the calls return, building the final result.
Click to reveal answer
What is the purpose of the base case in a recursive function?
ATo stop the recursion and prevent infinite calls
BTo call the function again
CTo increase the call stack size
DTo make the function run faster
What happens to the call stack when a recursive function calls itself?
AThe stack is cleared
BThe stack size decreases
CA new frame is added to the stack for each call
DNothing changes
Which of these is a correct base case for a factorial function?
Afactorial(n) = n + factorial(n - 1)
Bfactorial(1) = 0
Cfactorial(n) = n * factorial(n + 1)
Dfactorial(0) = 1
What error occurs if a recursive function never reaches a base case?
ASyntax error
BStack overflow error
CType error
DMemory leak
In recursion, what does 'unwinding the call stack' mean?
AReturning from recursive calls one by one
BAdding new calls to the stack
CClearing all variables
DStarting recursion again
Describe how recursion uses the call stack to solve problems step-by-step.
Think about how each call waits for the next before finishing.
You got /4 concepts.
    Explain why a base case is essential in recursion and what happens if it is missing.
    Consider what would happen if the function never stops calling itself.
    You got /4 concepts.

      Practice

      (1/5)
      1. What happens when a recursive function calls itself without a stopping condition?
      easy
      A. It runs only once and stops
      B. It causes an infinite loop leading to a stack overflow error
      C. It immediately returns without doing anything
      D. It throws a syntax error

      Solution

      1. Step 1: Understand recursion stopping condition

        A recursive function must have a base case to stop calling itself; otherwise, it keeps calling endlessly.
      2. Step 2: Effect of missing stopping condition

        Without a stopping condition, the function calls stack up until memory runs out, causing a stack overflow error.
      3. Final Answer:

        It causes an infinite loop leading to a stack overflow error -> Option B
      4. Quick Check:

        Missing base case = infinite recursion [OK]
      Hint: Always check for a base case to stop recursion [OK]
      Common Mistakes:
      • Assuming recursion stops automatically
      • Confusing infinite loop with syntax error
      • Thinking recursion runs only once without base case
      2. Which of the following is the correct syntax to define a recursive function in TypeScript?
      easy
      A. function recurse(n: number): number { if (n <= 0) return 0; return n + recurse(n - 1); }
      B. function recurse(n: number) { while(n > 0) recurse(n - 1); }
      C. function recurse(n: number): number { return n + recurse(n + 1); }
      D. function recurse(n: number): number { return n * recurse(n); }

      Solution

      1. Step 1: Check for base case and recursive call

        function recurse(n: number): number { if (n <= 0) return 0; return n + recurse(n - 1); } has a base case (n <= 0) and calls itself with n - 1, which is correct for recursion.
      2. Step 2: Analyze other options for errors

        The version with a while loop lacks a proper base case and return statement; another calls recurse with n + 1 causing infinite recursion; another calls recurse with the same n causing infinite recursion.
      3. Final Answer:

        function recurse(n: number): number { if (n <= 0) return 0; return n + recurse(n - 1); } -> Option A
      4. Quick Check:

        Base case + decreasing argument = correct recursion [OK]
      Hint: Look for base case and argument reducing in recursion [OK]
      Common Mistakes:
      • Missing base case
      • Increasing argument causing infinite recursion
      • Using loops instead of recursion
      3. What is the output of the following TypeScript code?
      function factorial(n: number): number {
        if (n === 0) return 1;
        return n * factorial(n - 1);
      }
      console.log(factorial(3));
      medium
      A. 9
      B. 1
      C. 3
      D. 6

      Solution

      1. Step 1: Trace factorial calls

        factorial(3) calls factorial(2), factorial(2) calls factorial(1), factorial(1) calls factorial(0) which returns 1.
      2. Step 2: Calculate return values

        factorial(1) = 1 * 1 = 1; factorial(2) = 2 * 1 = 2; factorial(3) = 3 * 2 = 6.
      3. Final Answer:

        6 -> Option D
      4. Quick Check:

        3! = 6 [OK]
      Hint: Factorial n! = n * (n-1)! [OK]
      Common Mistakes:
      • Confusing factorial with sum
      • Not tracing base case return
      • Multiplying incorrectly
      4. Identify the error in this recursive function and choose the fix:
      function sumTo(n: number): number {
        return n + sumTo(n - 1);
      }
      medium
      A. Change n - 1 to n + 1
      B. Change return to console.log
      C. Add a base case: if (n <= 0) return 0;
      D. Remove the recursive call

      Solution

      1. Step 1: Identify missing base case

        The function lacks a stopping condition, so it will recurse infinitely causing stack overflow.
      2. Step 2: Fix by adding base case

        Adding if (n <= 0) return 0; stops recursion when n reaches 0 or less.
      3. Final Answer:

        Add a base case: if (n <= 0) return 0; -> Option C
      4. Quick Check:

        Base case needed to stop recursion [OK]
      Hint: Always add base case to recursive functions [OK]
      Common Mistakes:
      • Ignoring base case causes infinite recursion
      • Changing recursive call incorrectly
      • Removing recursion defeats purpose
      5. Given the recursive function below, what will be the output when calling printNumbers(3)? Visualize the call stack.
      function printNumbers(n: number): void {
        if (n === 0) return;
        printNumbers(n - 1);
        console.log(n);
      }
      hard
      A. 1 2 3
      B. 3 2 1
      C. 3 3 3
      D. 1 1 1

      Solution

      1. Step 1: Understand call stack order

        printNumbers(3) calls printNumbers(2), which calls printNumbers(1), which calls printNumbers(0) and returns immediately.
      2. Step 2: Trace console.log calls after recursion

        After reaching base case, console.log prints 1, then 2, then 3 as the stack unwinds.
      3. Final Answer:

        1 2 3 -> Option A
      4. Quick Check:

        Post-recursion print = ascending order [OK]
      Hint: Print after recursive call prints ascending order [OK]
      Common Mistakes:
      • Printing before recursion causes descending order
      • Confusing call stack push/pop order
      • Expecting repeated numbers
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard