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 naturally breaks into similar smaller problems, like tree traversals or divide and conquer algorithms.
Click to reveal answer
intermediate
When is iteration better than recursion?
Iteration is better when you want to save memory and avoid the overhead of function calls, especially for simple loops or when recursion depth can be very large.
Click to reveal answer
intermediate
What is a risk of using recursion too deeply?
Using recursion too deeply can cause a stack overflow error because each function call uses memory on the call stack.
Click to reveal answer
Which of these problems is best solved using recursion?
AFinding the maximum in a list using a loop
BSumming numbers from 1 to 100
CPrinting numbers from 1 to 10
DCalculating factorial of a number
✗ Incorrect
Factorial naturally breaks down into smaller factorials, making recursion a good fit.
What is a main disadvantage of recursion compared to iteration?
AUses more memory due to call stack
BCannot solve complex problems
CAlways slower than iteration
DDoes not work with loops
✗ Incorrect
Each recursive call adds a new frame to the call stack, using more memory.
Which method is usually more efficient in terms of memory?
ARecursion
BIteration
CBoth use the same memory
DDepends on the programming language
✗ Incorrect
Iteration uses a fixed amount of memory for loop variables, while recursion uses extra memory for each call.
What is a base case in recursion?
AThe condition to stop recursion
BThe first recursive call
CA loop inside recursion
DAn error in recursion
✗ Incorrect
The base case stops the recursion to prevent infinite calls.
Which of these is a sign to prefer iteration over recursion?
AProblem needs backtracking
BProblem is naturally hierarchical
CProblem involves simple repeated steps
DProblem requires dividing into smaller problems
✗ Incorrect
Simple repeated steps are easier and more efficient with iteration.
Explain in your own words when recursion is a better choice than iteration.
Think about problems like exploring folders or splitting arrays.
You got /3 concepts.
Describe the main risks or downsides of using recursion too much.
Consider what happens when a function calls itself many times.
You got /3 concepts.
Practice
(1/5)
1. Which scenario is best suited for using recursion instead of iteration?
easy
A. When the problem requires simple repeated loops
B. When you want to avoid function call overhead
C. When the problem can be divided into similar smaller problems
D. When memory usage must be minimal
Solution
Step 1: Understand recursion vs iteration use cases
Recursion works well when a problem can be broken down into smaller, similar subproblems, like tree traversals or factorial calculation. Iteration is better for simple repeated tasks without nested subproblems, and it avoids function call overhead.
Final Answer:
When the problem can be divided into similar smaller problems -> Option C
Quick Check:
Recursion = divide and conquer [OK]
Hint: Recursion fits problems breaking into smaller similar parts [OK]
Common Mistakes:
Thinking iteration is always faster
Ignoring function call overhead in recursion
Confusing recursion with simple loops
2. Which of the following is the correct syntax to write a recursive function in TypeScript?
easy
A. function recurse(n: number): number { if (n <= 1) return 1; return n * recurse(n - 1); }
B. function recurse(n: number): number { while (n > 1) { n--; } return n; }
C. function recurse(n: number): number { for (let i = 0; i < n; i++) { return i; } }
D. function recurse(n: number): number { if (n == 0) return 0; else return n + 1; }
Solution
Step 1: Identify recursive call and base case
function recurse(n: number): number { if (n <= 1) return 1; return n * recurse(n - 1); }: function recurse(n: number): number { if (n <= 1) return 1; return n * recurse(n - 1); } calls itself inside the function with a smaller argument (n-1) and has a base case (n <= 1) to stop recursion.
Final Answer:
function recurse(n: number): number { if (n <= 1) return 1; return n * recurse(n - 1); } -> Option A
Quick Check:
Recursive function must call itself with smaller input [OK]
Hint: Look for function calling itself with smaller input [OK]
Common Mistakes:
Missing base case causing infinite recursion
Using loops instead of recursive calls
Returning inside a loop without recursion
3. What will be the output of the following TypeScript code?
function factorial(n: number): number {
if (n <= 1) return 1;
return n * factorial(n - 1);
}
console.log(factorial(4));
medium
A. 10
B. 24
C. 16
D. Error
Solution
Step 1: Trace recursive calls for factorial(4)
factorial(4) calls factorial(3), which calls factorial(2), which calls factorial(1)=1. Then: factorial(2)=2*1=2, factorial(3)=3*2=6, factorial(4)=4*6=24. Output: 24.
Final Answer:
24 -> Option B
Quick Check:
4! = 24 [OK]
Hint: Factorial n! = n * (n-1)! [OK]
Common Mistakes:
Confusing factorial with sum
Forgetting base case returns 1
Miscounting recursive calls
4. Identify the error in this recursive function and choose the fix:
function sumToN(n: number): number {
return n + sumToN(n - 1);
}
medium
A. Add a base case to stop recursion when n <= 0
B. Change return to console.log to print values
C. Replace recursion with a for loop
D. Remove the parameter n
Solution
Step 1: Identify and fix the missing base case
The function calls itself without a stopping condition, causing infinite recursion and stack overflow. Add if (n <= 0) return 0; to stop recursion when n <= 0.
Final Answer:
Add a base case to stop recursion when n <= 0 -> Option A
Quick Check:
Base case prevents infinite recursion [OK]
Hint: Always add base case to recursive functions [OK]
Common Mistakes:
Forgetting base case causes infinite recursion
Trying to fix by removing parameters
Confusing printing with returning
5. You need to process a large dataset with a depth of 10,000 levels. Which approach is better and why?
Options: A) Use recursion because it is easier to write. B) Use recursion with no base case. C) Use iteration to avoid stack overflow errors. D) Use iteration but with no loop control.
hard
A. Use recursion because it is easier to write.
B. Use recursion with no base case.
C. Use iteration but with no loop control.
D. Use iteration to avoid stack overflow errors.
Solution
Step 1: Analyze stack limits for deep recursion
Recursion uses the call stack, which has limited size. Depth of 10,000 risks stack overflow. Iteration uses loops without adding to call stack, safely handling large depths.
Final Answer:
Use iteration to avoid stack overflow errors. -> Option D
Quick Check:
Deep tasks need iteration to prevent stack overflow [OK]
Hint: Deep recursion risks stack overflow; prefer iteration [OK]
Common Mistakes:
Assuming recursion always better for readability
Ignoring stack size limits
Using recursion without base case
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.