Bird
Raised Fist0
DSA Rustprogramming~10 mins

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

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

Complete the code to return the base case value for factorial of 0.

DSA Rust
fn factorial(n: u32) -> u32 {
    if n == 0 {
        return [1];
    }
    n * factorial(n - 1)
}
Drag options to blanks, or click blank then click option'
A-1
B0
C1
Dn
Attempts:
3 left
💡 Hint
Common Mistakes
Returning 0 instead of 1 for the base case.
Returning n which causes infinite recursion.
2fill in blank
medium

Complete the recursive call to calculate factorial of n.

DSA Rust
fn factorial(n: u32) -> u32 {
    if n == 0 {
        return 1;
    }
    n [1] factorial(n - 1)
}
Drag options to blanks, or click blank then click option'
A+
B*
C-
D/
Attempts:
3 left
💡 Hint
Common Mistakes
Using '+' instead of '*' causing wrong results.
Using '-' or '/' which are incorrect for factorial.
3fill in blank
hard

Fix the error in the base case condition to stop recursion correctly.

DSA Rust
fn factorial(n: u32) -> u32 {
    if n [1] 0 {
        return 1;
    }
    n * factorial(n - 1)
}
Drag options to blanks, or click blank then click option'
A==
B>
C<
D!=
Attempts:
3 left
💡 Hint
Common Mistakes
Using '>' or '<' which do not correctly identify the base case.
Using '!=' which causes infinite recursion.
4fill in blank
hard

Fill both blanks to create a recursive function that sums numbers from n down to 1.

DSA Rust
fn sum_to_n(n: u32) -> u32 {
    if n == 0 {
        return 0;
    }
    n [1] sum_to_n(n [2] 1)
}
Drag options to blanks, or click blank then click option'
A+
B-
C*
D/
Attempts:
3 left
💡 Hint
Common Mistakes
Using multiplication instead of addition.
Calling sum_to_n with n+1 causing infinite recursion.
5fill in blank
hard

Fill all three blanks to write a recursive function that computes the nth Fibonacci number.

DSA Rust
fn fibonacci(n: u32) -> u32 {
    if n == 0 || n == 1 {
        return n;
    }
    fibonacci([1]) [2] fibonacci([3])
}
Drag options to blanks, or click blank then click option'
An - 1
B+
Cn - 2
D-
Attempts:
3 left
💡 Hint
Common Mistakes
Using subtraction instead of addition.
Using wrong indices like n+1 or n-3.

Practice

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

Solution

  1. Step 1: Understand the base case role

    The base case is the condition that stops the recursion from continuing indefinitely.
  2. Step 2: Differentiate from recursive case

    The recursive case calls the function again with smaller input, but the base case stops recursion.
  3. Final Answer:

    To stop the recursion and prevent infinite calls -> Option D
  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 increases input size
  • Assuming base case prints output
2. Which of the following is the correct syntax for a recursive function in Rust that calculates factorial?
easy
A. fn factorial(n: u32) -> u32 { loop { factorial(n - 1) } }
B. fn factorial(n: u32) -> u32 { while n > 0 { n * factorial(n - 1) } }
C. fn factorial(n: u32) -> u32 { if n == 0 { 1 } else { n * factorial(n - 1) } }
D. fn factorial(n: u32) -> u32 { return n + factorial(n - 1); }

Solution

  1. Step 1: Check base case and recursive call

    fn factorial(n: u32) -> u32 { if n == 0 { 1 } else { n * factorial(n - 1) } } correctly uses if n == 0 { 1 } as base case and recursive multiplication.
  2. Step 2: Identify syntax errors in other options

    fn factorial(n: u32) -> u32 { while n > 0 { n * factorial(n - 1) } } uses while loop incorrectly, C loops infinitely, D uses addition instead of multiplication.
  3. Final Answer:

    fn factorial(n: u32) -> u32 { if n == 0 { 1 } else { n * factorial(n - 1) } } -> Option C
  4. Quick Check:

    Correct base case and recursive call = fn factorial(n: u32) -> u32 { if n == 0 { 1 } else { n * factorial(n - 1) } } [OK]
Hint: Look for base case with if and recursive call with smaller input [OK]
Common Mistakes:
  • Using loops instead of recursion
  • Missing base case
  • Wrong operation in recursive call
3. What is the output of this Rust code?
fn sum(n: u32) -> u32 {
    if n == 0 {
        0
    } else {
        n + sum(n - 1)
    }
}

fn main() {
    println!("{}", sum(3));
}
medium
A. 3
B. 6
C. 0
D. Stack overflow error

Solution

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

    sum(3) = 3 + sum(2), sum(2) = 2 + sum(1), sum(1) = 1 + sum(0), sum(0) = 0.
  2. Step 2: Calculate total sum

    sum(3) = 3 + 2 + 1 + 0 = 6.
  3. Final Answer:

    6 -> Option B
  4. Quick Check:

    Sum 1 to 3 = 6 [OK]
Hint: Add numbers down to zero using recursion [OK]
Common Mistakes:
  • Confusing base case value
  • Forgetting to add current n
  • Expecting runtime error
4. Identify the error in this recursive Rust function that calculates factorial:
fn factorial(n: u32) -> u32 {
    n * factorial(n - 1)
}

fn main() {
    println!("{}", factorial(3));
}
medium
A. Missing base case to stop recursion
B. Wrong return type for factorial
C. Incorrect function name
D. Using multiplication instead of addition

Solution

  1. Step 1: Check for base case presence

    The function lacks a base case like if n == 0 { 1 } to stop recursion.
  2. Step 2: Understand recursion consequences

    Without base case, recursion never stops, causing stack overflow error.
  3. Final Answer:

    Missing base case to stop recursion -> Option A
  4. Quick Check:

    Base case missing = Missing base case to stop recursion [OK]
Hint: Always include base case to stop recursion [OK]
Common Mistakes:
  • Assuming recursion stops automatically
  • Ignoring base case importance
  • Confusing return types
5. You want to write a recursive function in Rust to find the nth Fibonacci number. Which of the following correctly shows the base case and recursive case?
hard
A. if n == 0 { 0 } else if n == 1 { 1 } else { fib(n - 1) + fib(n - 2) }
B. if n == 1 { 0 } else if n == 2 { 1 } else { fib(n - 1) * fib(n - 2) }
C. if n == 0 { 1 } else { fib(n - 1) + fib(n - 2) }
D. if n == 0 { 0 } else { fib(n - 1) - fib(n - 2) }

Solution

  1. Step 1: Identify correct base cases for Fibonacci

    Fibonacci sequence starts with fib(0) = 0 and fib(1) = 1, so base cases must reflect that.
  2. Step 2: Check recursive case correctness

    Recursive case sums previous two Fibonacci numbers: fib(n-1) + fib(n-2).
  3. Final Answer:

    if n == 0 { 0 } else if n == 1 { 1 } else { fib(n - 1) + fib(n - 2) } -> Option A
  4. Quick Check:

    Correct base and recursive case for Fibonacci = if n == 0 { 0 } else if n == 1 { 1 } else { fib(n - 1) + fib(n - 2) } [OK]
Hint: Fibonacci base cases: 0 and 1; recursive case sums previous two [OK]
Common Mistakes:
  • Wrong base case values
  • Using multiplication or subtraction instead of addition
  • Missing one base case
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