Bird
Raised Fist0
DSA C#programming~5 mins

Recursion Concept and Call Stack Visualization in DSA C# - 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 a recursive function that stops the recursion by returning a direct answer without calling itself again.
Click to reveal answer
intermediate
How does the call stack help in recursion?
The call stack keeps track of each recursive call, saving where to return after each call finishes, so the function can complete step by step.
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 runs out of space.
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 1 (base case). Then it returns 1 and multiplies back up the chain to get the final result.
Click to reveal answer
What does a recursive function always need to avoid infinite calls?
AAn array
BA base case
CA global variable
DA loop
In recursion, what does the call stack store?
AThe final result only
BOnly the first function call
CEach function call's return address and variables
DThe program's input
What will happen if a recursive function never reaches its base case?
ANo output
BProgram runs faster
CReturns zero
DStack overflow error
Which of these is a correct base case for factorial(n)?
Aif (n == 1) return 1;
Bif (n == 0) return 0;
Cif (n > 1) return n * factorial(n - 1);
Dif (n < 0) return -1;
What is the output of factorial(3) using recursion?
A6
B3
C9
D1
Describe how the call stack changes during the execution of a recursive factorial function for factorial(4).
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 could happen if it is missing.
    Consider what happens if the function keeps calling itself forever.
    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 immediately returns without doing anything
      C. It causes an infinite loop leading to a stack overflow error
      D. It converts into a normal loop automatically

      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 base case

        Without a base case, 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 C
      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 recursion with loops
      • Thinking recursion runs only once without base case
      2. Which of the following is the correct syntax to define a recursive method in C# that calculates factorial?
      easy
      A. int Factorial(int n) { if (n == 0) return 1; else return n * Factorial(n - 1); }
      B. int Factorial(int n) { while (n > 0) return n * Factorial(n - 1); return 1; }
      C. int Factorial(int n) { if (n == 1) return 0; else return n + Factorial(n - 1); }
      D. int Factorial(int n) { if (n == 0) return 0; else return n * Factorial(n + 1); }

      Solution

      1. Step 1: Check base case correctness

        Factorial base case is when n == 0, return 1; this matches int Factorial(int n) { if (n == 0) return 1; else return n * Factorial(n - 1); } only.
      2. Step 2: Check recursive call correctness

        Recursive call must reduce n by 1 and multiply; int Factorial(int n) { if (n == 0) return 1; else return n * Factorial(n - 1); } does this correctly.
      3. Final Answer:

        int Factorial(int n) { if (n == 0) return 1; else return n * Factorial(n - 1); } -> Option A
      4. Quick Check:

        Base case n==0 and n*Factorial(n-1) [OK]
      Hint: Base case returns 1; recursive call multiplies by n-1 factorial [OK]
      Common Mistakes:
      • Using wrong base case value
      • Increasing n instead of decreasing
      • Returning 0 instead of 1 in base case
      3. What is the output of the following C# code?
      static void PrintNumbers(int n) {
        if (n == 0) return;
        Console.Write(n + " ");
        PrintNumbers(n - 1);
      }
      
      PrintNumbers(3);
      medium
      A. 1 2 3
      B. 0 1 2 3
      C. 3 2 1 0
      D. 3 2 1

      Solution

      1. Step 1: Trace the recursive calls

        PrintNumbers(3) prints 3, then calls PrintNumbers(2), prints 2, calls PrintNumbers(1), prints 1, then calls PrintNumbers(0) which returns.
      2. Step 2: Collect printed output

        Printed numbers are 3, 2, 1 in that order, each followed by a space.
      3. Final Answer:

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

        Print then recurse = descending order [OK]
      Hint: Print before recursive call prints descending sequence [OK]
      Common Mistakes:
      • Assuming print happens after recursion
      • Including 0 in output
      • Confusing order of prints
      4. The following recursive method is intended to print numbers from 1 to n. What is the error?
      void PrintUp(int n) {
        if (n == 0) return;
        PrintUp(n - 1);
        Console.Write(n + " ");
      }
      
      PrintUp(-1);
      medium
      A. Infinite recursion because negative n never reaches 0
      B. No error; it prints numbers correctly
      C. Syntax error due to missing return type
      D. Runtime error because Console.Write is invalid

      Solution

      1. Step 1: Analyze base case condition

        Base case stops recursion when n == 0, but if n starts negative, it never reaches 0.
      2. Step 2: Effect of negative input

        Calling PrintUp(-1) causes infinite recursion because n keeps decreasing and never hits 0.
      3. Final Answer:

        Infinite recursion because negative n never reaches 0 -> Option A
      4. Quick Check:

        Base case unreachable with negative input [OK]
      Hint: Check base case covers all input ranges [OK]
      Common Mistakes:
      • Assuming negative input is handled
      • Thinking syntax or Console.Write causes error
      • Ignoring infinite recursion possibility
      5. Consider this recursive method that sums numbers from 1 to n:
      int Sum(int n) {
        if (n <= 0) return 0;
        return n + Sum(n - 1);
      }

      What is the output of Sum(4) and how many times is the method called?
      hard
      A. Output: 10, Method calls: 4
      B. Output: 10, Method calls: 5
      C. Output: 15, Method calls: 5
      D. Output: 15, Method calls: 4

      Solution

      1. Step 1: Calculate Sum(4) step-by-step

        Sum(4) = 4 + Sum(3), Sum(3) = 3 + Sum(2), Sum(2) = 2 + Sum(1), Sum(1) = 1 + Sum(0), Sum(0) = 0. So total = 4+3+2+1+0 = 10.
      2. Step 2: Count method calls

        Calls happen for n=4,3,2,1,0 totaling 5 calls.
      3. Final Answer:

        Output: 10, Method calls: 5 -> Option B
      4. Quick Check:

        Sum 1 to 4 = 10; calls = n+1 [OK]
      Hint: Sum calls = n+1; sum formula n(n+1)/2 for output [OK]
      Common Mistakes:
      • Counting calls as n instead of n+1
      • Calculating sum incorrectly
      • Ignoring base case call
      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