Bird
Raised Fist0
DSA Goprogramming~3 mins

Why Recursion Base Case and Recursive Case in DSA Go?

Choose your learning style10 modes available
The Big Idea

What if you could solve big problems by solving tiny pieces again and again, stopping exactly when needed?

The Scenario

Imagine you want to find the total number of steps to climb a tall staircase by counting each step manually, starting from the top and going down one by one.

The Problem

Counting each step manually is slow and tiring. If you lose track or skip a step, your count will be wrong. It's hard to keep track of where you are without a clear stopping point.

The Solution

Recursion breaks the problem into smaller parts by calling itself with simpler inputs. The base case tells when to stop, preventing endless counting. The recursive case moves closer to the base case step by step, making the process clear and reliable.

Before vs After
✗ Before
func countSteps(steps int) int {
    total := 0
    for i := steps; i > 0; i-- {
        total++
    }
    return total
}
✓ After
func countSteps(steps int) int {
    if steps == 0 {
        return 0
    }
    return 1 + countSteps(steps-1)
}
What It Enables

Recursion with base and recursive cases lets you solve complex problems by breaking them into simple, repeatable steps that stop correctly.

Real Life Example

Think of folding a large map repeatedly until it's small enough to fit in your pocket. The base case is when the map is small enough, and the recursive case is each fold making it smaller.

Key Takeaways

Base case stops the recursion to avoid infinite loops.

Recursive case breaks the problem into smaller parts.

Together, they make complex problems easier to solve step-by-step.

Practice

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

Solution

  1. Step 1: Understand recursion basics

    A recursive function calls itself repeatedly until a stopping condition is met.
  2. Step 2: Identify the role of base case

    The base case stops further recursive calls to avoid infinite loops.
  3. Final Answer:

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

    Base case = stop recursion [OK]
Hint: Base case always stops recursion to avoid infinite loops [OK]
Common Mistakes:
  • Confusing base case with recursive case
  • Thinking base case calls function again
  • Ignoring base case leads to infinite recursion
2. Which of the following is the correct syntax for a base case in Go recursion to stop when n is zero?
easy
A. if n == 0 { return 0 }
B. if n = 0 { return 0 }
C. if n != 0 { return 0 }
D. if n > 0 { return 0 }

Solution

  1. Step 1: Check Go syntax for condition

    In Go, equality check uses '==' not '=' which is assignment.
  2. Step 2: Identify correct base case condition

    Base case stops recursion when n equals zero, so 'if n == 0 { return 0 }' is correct.
  3. Final Answer:

    if n == 0 { return 0 } -> Option A
  4. Quick Check:

    Use '==' for comparison in base case [OK]
Hint: Use '==' for comparison in base case conditions [OK]
Common Mistakes:
  • Using '=' instead of '==' for comparison
  • Wrong condition logic for base case
  • Returning wrong value in base case
3. What will be the output of this Go recursive function when called with factorial(3)?
func factorial(n int) int {
    if n == 0 {
        return 1
    }
    return n * factorial(n - 1)
}
medium
A. 6
B. 3
C. 0
D. 1

Solution

  1. Step 1: Trace recursive calls for factorial(3)

    factorial(3) = 3 * factorial(2) factorial(2) = 2 * factorial(1) factorial(1) = 1 * factorial(0) factorial(0) = 1 (base case)
  2. Step 2: Calculate return values step-by-step

    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: Multiply n by factorial(n-1) until n=0 [OK]
Common Mistakes:
  • Forgetting base case returns 1
  • Multiplying incorrectly in recursive step
  • Confusing factorial with addition
4. Identify the error in this recursive Go function to compute the sum of numbers from 1 to n:
func sum(n int) int {
    if n == 1 {
        return 1
    }
    return n + sum(n)
}
medium
A. Base case condition is incorrect
B. Function should return n * sum(n-1)
C. Recursive call does not reduce n, causing infinite recursion
D. Return statement should be outside the if block

Solution

  1. Step 1: Analyze recursive call argument

    The function calls sum(n) again without reducing n, so it never reaches base case.
  2. Step 2: Identify infinite recursion cause

    Recursive call must use sum(n-1) to reduce n and eventually stop at base case.
  3. Final Answer:

    Recursive call does not reduce n, causing infinite recursion -> Option C
  4. Quick Check:

    Recursive argument must decrease to reach base case [OK]
Hint: Recursive calls must reduce input to reach base case [OK]
Common Mistakes:
  • Calling recursion with same argument
  • Wrong base case value
  • Misplacing return statement
5. Given this recursive Go function to reverse a string, what is the output of reverse("go")?
func reverse(s string) string {
    if len(s) == 0 {
        return ""
    }
    return reverse(s[1:]) + string(s[0])
}
hard
A. "go"
B. "og"
C. ""
D. Runtime error

Solution

  1. Step 1: Trace recursive calls for reverse("go")

    reverse("go") calls reverse("o") + "g" reverse("o") calls reverse("") + "o" reverse("") returns "" (base case)
  2. Step 2: Combine return values step-by-step

    reverse("") = "" reverse("o") = "" + "o" = "o" reverse("go") = "o" + "g" = "og"
  3. Final Answer:

    "og" -> Option B
  4. Quick Check:

    String reversed = "og" [OK]
Hint: Reverse substring then add first char at end [OK]
Common Mistakes:
  • Confusing substring slicing
  • Forgetting base case returns empty string
  • Concatenating in wrong order
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