Recursion is when a function calls itself to solve smaller parts of a problem until it reaches a simple case it can solve directly.
Click to reveal answer
beginner
What is iteration in simple terms?
Iteration means repeating a set of instructions using loops like for or while until a condition is met.
Click to reveal answer
intermediate
When is recursion better than iteration?
Recursion is better when the problem is naturally divided into similar smaller problems, like tree traversals or factorial calculation.
Click to reveal answer
intermediate
When is iteration better than recursion?
Iteration is better when you want to save memory and avoid overhead from many function calls, like simple loops or counting.
Click to reveal answer
intermediate
What is a risk of using recursion?
Recursion can cause a stack overflow if it goes too deep because each call uses memory on the call stack.
Click to reveal answer
Which method uses function calls to solve smaller parts of a problem?
ANeither
BIteration
CBoth
DRecursion
✗ Incorrect
Recursion solves problems by calling itself on smaller parts.
Which is usually more memory efficient?
AIteration
BRecursion
CBoth use the same memory
DDepends on the problem
✗ Incorrect
Iteration uses loops and usually less memory than recursion which uses the call stack.
Which approach is better for traversing a tree structure?
ARecursion
BIteration
CNeither
DBoth are equally bad
✗ Incorrect
Recursion fits well with tree traversal because trees have a natural recursive structure.
What problem can happen if recursion goes too deep?
AInfinite loop
BStack overflow
CMemory leak
DSyntax error
✗ Incorrect
Too many recursive calls can overflow the call stack causing a crash.
Which is easier to debug for simple counting tasks?
ARecursion
BBoth are equally easy
CIteration
DNeither
✗ Incorrect
Iteration with loops is simpler and easier to debug for counting tasks.
Explain when recursion is a better choice than iteration and why.
Think about problems like tree traversal or factorial.
You got /3 concepts.
Describe the main risks or downsides of using recursion.
Consider what happens when recursion depth is very large.
You got /3 concepts.
Practice
(1/5)
1. Which scenario is best suited for using recursion instead of iteration?
easy
A. When the problem can be divided into similar smaller problems
B. When you want to avoid function call overhead
C. When memory usage must be minimal
D. When the problem requires simple repeated loops
Solution
Step 1: Understand recursion use case
Recursion works well when a problem can be broken down into smaller similar problems, like tree traversals or factorial calculation.
Step 2: Compare with iteration scenarios
Iteration is better for simple repeated loops or when minimizing overhead and memory is critical.
Final Answer:
When the problem can be divided into similar smaller problems -> Option A
Quick Check:
Recursion fits divide-and-conquer problems = A [OK]
Hint: Recursion fits problems breaking into smaller similar parts [OK]
Common Mistakes:
Thinking iteration is always better for all problems
Ignoring function call overhead in recursion
Confusing recursion with simple loops
2. Which of the following is the correct syntax to write a recursive method in Java?
easy
A. public void recurse() { recurse(); }
B. public void recurse() { while(true) recurse(); }
C. public void recurse() { if(condition) recurse(); }
D. public void recurse() { for(int i=0; i<10; i++) recurse(); }
Solution
Step 1: Identify valid recursive call
A recursive method must have a base condition to stop calling itself, so it uses if(condition) before recursion.
Step 2: Check options for base condition
public void recurse() { if(condition) recurse(); } uses if(condition) recurse(); which is correct. Others cause infinite recursion or misuse loops.
Final Answer:
public void recurse() { if(condition) recurse(); } -> Option C
Quick Check:
Base condition needed for recursion = D [OK]
Hint: Recursive calls must have a stopping condition [OK]
Common Mistakes:
Writing recursion without base condition
Using loops inside recursion incorrectly
Confusing infinite recursion with iteration
3. What will be the output of the following Java code?
public class Test {
static int count = 0;
public static void recurse(int n) {
if (n == 0) return;
count++;
recurse(n - 1);
}
public static void main(String[] args) {
recurse(3);
System.out.println(count);
}
}
medium
A. 4
B. 3
C. 0
D. StackOverflowError
Solution
Step 1: Trace recursive calls
recurse(3) calls recurse(2), then recurse(1), then recurse(0) which returns without incrementing count.
Step 2: Count increments
count increments at n=3, 2, 1, so total increments = 3.
Final Answer:
3 -> Option B
Quick Check:
Count increments per call except base = 3 [OK]
Hint: Count increments before recursive call, base stops at zero [OK]
Common Mistakes:
Counting base case call as increment
Expecting stack overflow due to small input
Miscounting recursive calls
4. Identify the error in this iterative factorial method and fix it:
public static int factorial(int n) {
int result = 1;
for (int i = 1; i <= n; i++) {
result = result * i;
}
return result;
}
// Called with factorial(-3)
medium
A. Missing return statement
B. Infinite loop due to wrong loop condition
C. No error, returns 1 for negative input
D. Should check for negative input to avoid incorrect result
Solution
Step 1: Analyze loop behavior with negative input
For n = -3, loop condition i <= n is false at start (1 <= -3), so loop never runs and returns 1 incorrectly.
Step 2: Add input validation
Factorial is undefined for negative numbers, so method should check and handle negative input before loop.
Final Answer:
Should check for negative input to avoid incorrect result -> Option D
Quick Check:
Validate input before iteration = A [OK]
Hint: Always validate inputs before loops in iterative methods [OK]
Common Mistakes:
Ignoring negative inputs in factorial
Assuming loop runs for negative n
Missing input validation
5. You need to process a large dataset with unknown depth of nested structures. Which approach is better and why?
Options: A) Use recursion for simplicity but risk stack overflow. B) Use iteration with explicit stack to handle unknown depth safely. C) Use recursion with no base case to ensure all data is processed. D) Use iteration with fixed loop count assuming max depth known.
hard
A. Use iteration with explicit stack to handle unknown depth safely.
B. Use recursion for simplicity but risk stack overflow.
C. Use recursion with no base case to ensure all data is processed.
D. Use iteration with fixed loop count assuming max depth known.
Solution
Step 1: Understand problem constraints
Unknown depth means recursion might cause stack overflow if too deep.
Step 2: Compare recursion and iteration
Iteration with an explicit stack simulates recursion safely and avoids overflow.
Step 3: Evaluate incorrect options
Use recursion with no base case to ensure all data is processed. is wrong due to no base case causing infinite recursion. Use iteration with fixed loop count assuming max depth known. assumes fixed depth which is unsafe.
Final Answer:
Use iteration with explicit stack to handle unknown depth safely. -> Option A
Quick Check:
Iteration + explicit stack avoids recursion limits = B [OK]
Hint: Use explicit stack iteration for unknown or deep recursion [OK]
Common Mistakes:
Ignoring stack overflow risk in recursion
Assuming fixed depth for iteration
Missing base case in recursion
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.