Bird
Raised Fist0
DSA Goprogramming~10 mins

Recursion Base Case and Recursive Case in DSA Go - Interactive Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to define the base case for the factorial function.

DSA Go
func factorial(n int) int {
    if n == [1] {
        return 1
    }
    return n * factorial(n-1)
}
Drag options to blanks, or click blank then click option'
A0
B1
C-1
Dn
Attempts:
3 left
💡 Hint
Common Mistakes
Using 1 as base case instead of 0
No base case causing infinite recursion
2fill in blank
medium

Complete the code to correctly call the recursive case in the Fibonacci function.

DSA Go
func fibonacci(n int) int {
    if n <= 1 {
        return n
    }
    return fibonacci([1]) + fibonacci(n-2)
}
Drag options to blanks, or click blank then click option'
An-1
Bn-2
Cn
D1
Attempts:
3 left
💡 Hint
Common Mistakes
Using n instead of n-1
Swapping the order of calls incorrectly
3fill in blank
hard

Fix the error in the recursive sum function by completing the base case condition.

DSA Go
func sumSlice(nums []int) int {
    if len(nums) == [1] {
        return 0
    }
    return nums[0] + sumSlice(nums[1:])
}
Drag options to blanks, or click blank then click option'
A1
Blen(nums)
C-1
D0
Attempts:
3 left
💡 Hint
Common Mistakes
Using 1 instead of 0 causing index errors
No base case causing infinite recursion
4fill in blank
hard

Fill both blanks to complete the recursive function that counts down from n to 1.

DSA Go
func countdown(n int) {
    if n [1] 0 {
        return
    }
    fmt.Println(n)
    countdown(n [2] 1)
}
Drag options to blanks, or click blank then click option'
A<=
B>
C-
D+
Attempts:
3 left
💡 Hint
Common Mistakes
Using <= in base case causing no output
Adding 1 instead of subtracting causing infinite recursion
5fill in blank
hard

Fill all three blanks to complete the recursive function that builds a string of 2*n stars.

DSA Go
func stars(n int) string {
    if n == [1] {
        return ""
    }
    return "*" + stars(n [2] 1) + [3]
}
Drag options to blanks, or click blank then click option'
A0
B-
C"*"
D+
Attempts:
3 left
💡 Hint
Common Mistakes
Using 1 as base case causing extra star
Adding instead of subtracting n
Missing star concatenation

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