📖 Scenario: Imagine you are helping a friend understand two ways to solve problems: recursion and iteration. You will create simple examples to see how each works and when one might be better than the other.
🎯 Goal: Build two functions in TypeScript: one using recursion and one using iteration to calculate the factorial of a number. Learn how each method works and print the results.
📋 What You'll Learn
Create a variable called num with the value 5.
Create a recursive function called factorialRecursive that takes a number and returns its factorial.
Create an iterative function called factorialIterative that takes a number and returns its factorial.
Print the results of both functions for the number num.
💡 Why This Matters
🌍 Real World
Understanding recursion and iteration helps in solving many programming problems like searching, sorting, and navigating data structures.
💼 Career
Many software engineering roles require knowledge of recursion and iteration to write efficient and clean code.
Progress0 / 4 steps
1
Set up the number to calculate factorial
Create a variable called num and set it to 5.
DSA Typescript
Hint
Use const num = 5; to create the number.
2
Write the recursive factorial function
Create a recursive function called factorialRecursive that takes a parameter n and returns 1 if n is 0, otherwise returns n * factorialRecursive(n - 1).
DSA Typescript
Hint
Use a function that calls itself with n - 1 until n is 0.
3
Write the iterative factorial function
Create an iterative function called factorialIterative that takes a parameter n, uses a for loop from 1 to n, multiplies the numbers, and returns the result.
DSA Typescript
Hint
Use a loop to multiply numbers from 1 to n and return the product.
4
Print the factorial results
Print the result of factorialRecursive(num) with the message "Recursive factorial of 5:" and the result of factorialIterative(num) with the message "Iterative factorial of 5:".
DSA Typescript
Hint
Use console.log to print the messages and results.
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.