Bird
Raised Fist0
DSA Goprogramming~20 mins

Factorial Using Recursion in DSA Go - Practice Problems & Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Factorial Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
What is the output of this factorial recursive function call?
Consider the following Go code that calculates factorial using recursion. What will be printed when calling factorial(4)?
DSA Go
package main
import "fmt"

func factorial(n int) int {
    if n == 0 {
        return 1
    }
    return n * factorial(n-1)
}

func main() {
    fmt.Println(factorial(4))
}
A24
B120
C10
D0
Attempts:
2 left
💡 Hint
Recall that factorial of 4 is 4 * 3 * 2 * 1.
❓ Predict Output
intermediate
2:00remaining
What is the output of factorial(0) in this recursive function?
Given the factorial recursive function below, what will be the output of factorial(0)?
DSA Go
package main
import "fmt"

func factorial(n int) int {
    if n == 0 {
        return 1
    }
    return n * factorial(n-1)
}

func main() {
    fmt.Println(factorial(0))
}
A0
Bundefined
C1
Dpanic: stack overflow
Attempts:
2 left
💡 Hint
Factorial of zero is defined as 1.
🔧 Debug
advanced
2:00remaining
What error occurs when calling factorial(-1) with this code?
Analyze the following factorial recursive function. What happens if factorial(-1) is called?
DSA Go
package main
import "fmt"

func factorial(n int) int {
    if n == 0 {
        return 1
    }
    return n * factorial(n-1)
}

func main() {
    fmt.Println(factorial(-1))
}
Acompilation error
Breturns 1
Creturns 0
Dpanic: stack overflow
Attempts:
2 left
💡 Hint
Think about what happens when n never reaches 0.
🧠 Conceptual
advanced
2:00remaining
How many times is factorial called when computing factorial(3)?
Using the recursive factorial function, how many total calls to factorial are made when computing factorial(3)?
DSA Go
func factorial(n int) int {
    if n == 0 {
        return 1
    }
    return n * factorial(n-1)
}
A4
B3
C2
D1
Attempts:
2 left
💡 Hint
Count the initial call plus each recursive call until base case.
🚀 Application
expert
2:00remaining
What is the output of this modified factorial function with memoization for factorial(5)?
Consider this Go code that uses recursion with memoization to compute factorial. What is printed when factorial(5) is called?
DSA Go
package main
import "fmt"

var memo = map[int]int{}

func factorial(n int) int {
    if n == 0 {
        return 1
    }
    if val, ok := memo[n]; ok {
        return val
    }
    memo[n] = n * factorial(n-1)
    return memo[n]
}

func main() {
    fmt.Println(factorial(5))
}
A24
B120
C0
Dpanic: runtime error
Attempts:
2 left
💡 Hint
Memoization stores results to avoid repeated calculations.

Practice

(1/5)
1. What does the factorial of a number represent in mathematics?
easy
A. The product of all positive integers up to that number
B. The sum of all positive integers up to that number
C. The number multiplied by 2
D. The number divided by 2

Solution

  1. Step 1: Understand factorial definition

    Factorial of a number n (written as n!) is the product of all positive integers from 1 to n.
  2. Step 2: Compare options with definition

    Only The product of all positive integers up to that number correctly describes factorial as a product, not sum or other operations.
  3. Final Answer:

    The product of all positive integers up to that number -> Option A
  4. Quick Check:

    Factorial = product of integers [OK]
Hint: Factorial multiplies numbers down to 1 [OK]
Common Mistakes:
  • Confusing factorial with sum
  • Thinking factorial doubles the number
  • Assuming factorial divides the number
2. Which of the following is the correct base case for a recursive factorial function in Go?
easy
A. if n == 0 { return 1 }
B. if n == 1 { return 0 }
C. if n == 0 { return 0 }
D. if n == 1 { return n + 1 }

Solution

  1. Step 1: Identify base case for factorial

    Factorial of 0 is defined as 1, so base case should return 1 when n is 0.
  2. Step 2: Check options for correct base case

    Only if n == 0 { return 1 } returns 1 when n == 0, which is correct base case.
  3. Final Answer:

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

    Base case n=0 returns 1 [OK]
Hint: Factorial base case returns 1 at zero [OK]
Common Mistakes:
  • Returning 0 for base case
  • Returning wrong value for n=1
  • Missing base case causing infinite recursion
3. What is the output of this Go code?
func factorial(n int) int {
    if n == 0 {
        return 1
    }
    return n * factorial(n-1)
}

fmt.Println(factorial(3))
medium
A. 3
B. 9
C. 6
D. 0

Solution

  1. Step 1: Trace factorial(3) calls

    factorial(3) calls 3 * factorial(2), factorial(2) calls 2 * factorial(1), factorial(1) calls 1 * factorial(0), factorial(0) 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 C
  4. Quick Check:

    3! = 6 [OK]
Hint: Multiply down from n to 1 recursively [OK]
Common Mistakes:
  • Adding instead of multiplying
  • Returning n instead of recursive call
  • Missing base case causing stack overflow
4. Identify the error in this recursive factorial function:
func factorial(n int) int {
    if n == 1 {
        return 1
    }
    return n * factorial(n)
}
medium
A. Missing base case for n == 0
B. Recursive call uses n instead of n-1 causing infinite recursion
C. Returns 0 instead of 1 in base case
D. Function should return float instead of int

Solution

  1. Step 1: Analyze recursive call parameter

    The function calls factorial(n) again without reducing n, causing infinite recursion.
  2. Step 2: Identify correct recursive call

    Recursive call should be factorial(n-1) to reduce n and reach base case.
  3. Final Answer:

    Recursive call uses n instead of n-1 causing infinite recursion -> Option B
  4. Quick Check:

    Recursive call must reduce n [OK]
Hint: Recursive call must reduce input to reach base case [OK]
Common Mistakes:
  • Calling factorial with same n causing infinite loop
  • Wrong base case value
  • Ignoring base case leading to stack overflow
5. How would you modify the recursive factorial function to handle negative inputs gracefully in Go?
hard
A. Use a loop instead of recursion for negative inputs
B. Remove base case and let recursion handle negative inputs
C. Return factorial of absolute value of n without check
D. Add a check to return 0 if n is negative before recursion

Solution

  1. Step 1: Understand factorial domain

    Factorial is not defined for negative numbers, so function should handle negatives explicitly.
  2. Step 2: Add input validation

    Adding a check to return 0 (or error) if n is negative prevents invalid recursion calls.
  3. Final Answer:

    Add a check to return 0 if n is negative before recursion -> Option D
  4. Quick Check:

    Validate input before recursion [OK]
Hint: Check for negatives before recursion to avoid errors [OK]
Common Mistakes:
  • Ignoring negative inputs causing infinite recursion
  • Using absolute value without validation
  • Removing base case causing stack overflow
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