Bird
Raised Fist0
DSA Cprogramming~10 mins

Recursion Base Case and Recursive Case in DSA C - Execution Trace

Choose your learning style10 modes available
Concept Flow - Recursion Base Case and Recursive Case
Start Recursive Function
↓
Check Base Case?
Yes→Return Base Value
No↓
Perform Recursive Call with Smaller Input
↓
Combine Result and Return
↓
End
The function checks if it reached the simplest case (base case). If yes, it returns a value. Otherwise, it calls itself with a smaller input and combines the result.
Execution Sample
DSA C
int factorial(int n) {
  if (n == 0) return 1;
  return n * factorial(n - 1);
}
Calculates factorial of n using recursion with a base case when n is 0.
Execution Table
StepCall StackCurrent nCondition (n==0?)ActionReturn ValueVisual Call Stack
1factorial(3)3NoCall factorial(2)factorial(3)
2factorial(3) -> factorial(2)2NoCall factorial(1)factorial(3) └─ factorial(2)
3factorial(3) -> factorial(2) -> factorial(1)1NoCall factorial(0)factorial(3) └─ factorial(2) └─ factorial(1)
4factorial(3) -> factorial(2) -> factorial(1) -> factorial(0)0YesReturn 11factorial(3) └─ factorial(2) └─ factorial(1) └─ factorial(0)
5factorial(3) -> factorial(2) -> factorial(1)1-Return 1 * 1 = 11factorial(3) └─ factorial(2) └─ factorial(1)
6factorial(3) -> factorial(2)2-Return 2 * 1 = 22factorial(3) └─ factorial(2)
7factorial(3)3-Return 3 * 2 = 66factorial(3)
8---All calls returned, final result = 66-
💡 Recursion ends when base case n==0 is reached and all calls return their results.
Variable Tracker
VariableStartAfter Step 1After Step 2After Step 3After Step 4After Step 5After Step 6After Step 7Final
n332101233
Return Value11266
Call Stack Depth123443210
Key Moments - 3 Insights
Why does the recursion stop at n == 0 and not before?
Because the base case condition (n == 0) is checked at each call (see Step 4 in execution_table). When true, it returns a value without further calls, stopping recursion.
What happens to the call stack when a recursive call returns?
The call stack shrinks as each function returns its result (see Steps 5 to 7). Each return removes the top call, moving back to the previous call.
Why do we multiply n by factorial(n-1) after the recursive call?
Because factorial(n) = n * factorial(n-1). The multiplication happens after the recursive call returns its value (see Step 5 and onwards).
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table at Step 4, what is the return value when n == 0?
An
B0
C1
DUndefined
💡 Hint
Check the 'Return Value' column at Step 4 in execution_table.
At which step does the call stack start to shrink?
AStep 3
BStep 5
CStep 4
DStep 7
💡 Hint
Look at the 'Call Stack' and 'Visual Call Stack' columns from Step 4 to Step 5.
If the base case was changed to n == 1, how would the execution_table change?
ARecursion would stop one step earlier, base case reached at n==1
BRecursion would stop earlier, base case reached at n==0
CNo change in recursion steps
DRecursion would never stop
💡 Hint
Think about when the base case condition is true and when recursion stops.
Concept Snapshot
Recursion has two parts:
- Base Case: stops recursion (e.g., if n==0 return 1)
- Recursive Case: calls itself with smaller input (e.g., n * factorial(n-1))
Each call waits for the next call to return before finishing.
Without base case, recursion never ends and causes error.
Full Transcript
Recursion works by a function calling itself with smaller inputs until it reaches a base case. The base case stops further calls and returns a simple value. Then each previous call uses that returned value to compute its own result and return it. For example, factorial(3) calls factorial(2), which calls factorial(1), which calls factorial(0). At factorial(0), the base case returns 1. Then factorial(1) returns 1*1=1, factorial(2) returns 2*1=2, and factorial(3) returns 3*2=6. The call stack grows with each call and shrinks as calls return. This process ensures the problem is solved step-by-step.

Practice

(1/5)
1. What is the purpose of the base case in a recursive function?
easy
A. To call the function again with a smaller input
B. To stop the recursion and prevent infinite calls
C. To increase the input size for the next call
D. To print the result of the recursion

Solution

  1. Step 1: Understand what recursion does

    Recursion calls the same function repeatedly with smaller inputs.
  2. Step 2: Identify the role of the base case

    The base case stops the recursion by providing a condition where no further calls happen.
  3. Final Answer:

    To stop the recursion and prevent infinite calls -> Option B
  4. Quick Check:

    Base case = stop recursion [OK]
Hint: Base case stops recursion to avoid infinite loops [OK]
Common Mistakes:
  • Confusing base case with recursive case
  • Thinking base case calls function again
  • Ignoring the need for a stopping condition
2. Which of the following is the correct syntax for a base case in a recursive function in C?
easy
A. if (n == 0) return 1;
B. while (n > 0) callFunction(n-1);
C. for (int i=0; i
D. return callFunction(n+1);

Solution

  1. Step 1: Identify base case syntax

    The base case uses an if condition to check when to stop recursion.
  2. Step 2: Check each option

    if (n == 0) return 1; uses if (n == 0) return 1; which correctly stops recursion. Others use loops or increase n, which are incorrect.
  3. Final Answer:

    if (n == 0) return 1; -> Option A
  4. Quick Check:

    Base case uses if condition [OK]
Hint: Base case uses if condition to stop recursion [OK]
Common Mistakes:
  • Using loops instead of base case
  • Increasing input instead of decreasing
  • Missing return statement in base case
3. What is the output of the following C code?
int factorial(int n) {
  if (n == 0) return 1;
  else return n * factorial(n - 1);
}

int main() {
  printf("%d", factorial(3));
  return 0;
}
medium
A. 6
B. 9
C. 3
D. 0

Solution

  1. Step 1: Trace factorial(3) calls

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

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

    6 -> Option A
  4. Quick Check:

    3! = 6 [OK]
Hint: Factorial n! = n*(n-1)! with base case 0! = 1 [OK]
Common Mistakes:
  • Not returning 1 for factorial(0)
  • Multiplying incorrectly
  • Confusing output with input
4. Identify the error in this recursive function that calculates the sum of numbers from 1 to n:
int sum(int n) {
  if (n == 1) return 1;
  else return n + sum(n);
}
medium
A. Base case condition is incorrect
B. Missing return statement
C. Function should not be recursive
D. Recursive call does not reduce input

Solution

  1. Step 1: Check base case

    Base case is if (n == 1) return 1; which is correct.
  2. Step 2: Analyze recursive call

    Recursive call is sum(n) which does not reduce n, causing infinite recursion.
  3. Final Answer:

    Recursive call does not reduce input -> Option D
  4. Quick Check:

    Recursive input must decrease [OK]
Hint: Recursive calls must reduce input to reach base case [OK]
Common Mistakes:
  • Calling sum(n) instead of sum(n-1)
  • Wrong base case value
  • Forgetting to return recursive call
5. You want to write a recursive function to reverse a string in C. Which of the following correctly shows the base case and recursive case?
hard
A. Base case: always call reverse with length-1; Recursive case: print string
B. Base case: if string length > 1, call reverse again; Recursive case: return string as is
C. Base case: if string is empty or length 1, return string; Recursive case: return last char + reverse(rest of string)
D. Base case: if string is empty, print string; Recursive case: add first char to end

Solution

  1. Step 1: Understand base case for string reversal

    Base case stops recursion when string is empty or length 1, returning string as is.
  2. Step 2: Understand recursive case

    Recursive case returns last character plus reversed substring excluding last character.
  3. Final Answer:

    Base case: if string is empty or length 1, return string; Recursive case: return last char + reverse(rest of string) -> Option C
  4. Quick Check:

    Base case stops; recursive case reduces string [OK]
Hint: Base case returns small string; recursive case reduces string size [OK]
Common Mistakes:
  • Wrong base case condition
  • Recursive case not reducing string length
  • Confusing base and recursive cases
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