📖 Scenario: Imagine you want to climb a staircase that has a certain number of steps. You can climb either 1 step or 2 steps at a time. You want to find out how many different ways you can reach the top.
🎯 Goal: Build a program that calculates the number of distinct ways to climb to the top of a staircase with n steps, where you can take either 1 or 2 steps at a time.
📋 What You'll Learn
Create a variable n to represent the total number of steps in the staircase.
Create a variable ways to store the number of ways to climb each step.
Use a loop to calculate the number of ways to reach each step from 1 to n.
Print the total number of ways to climb n steps.
💡 Why This Matters
🌍 Real World
This problem models situations where you need to count different ways to reach a goal with limited moves, like climbing stairs or steps in a game.
💼 Career
Understanding this problem helps with learning dynamic programming, a key skill in software engineering and coding interviews.
Progress0 / 4 steps
1
Set up the total number of steps
Create a variable called n and set it to 5 to represent the total number of steps in the staircase.
DSA Typescript
Hint
Use const n = 5; to set the number of steps.
2
Create an array to store ways to climb
Create an array called ways with length n + 1. Initialize ways[0] to 1 and ways[1] to 1. This array will store the number of ways to reach each step.
DSA Typescript
Hint
Use new Array(n + 1).fill(0) to create the array and set the first two values to 1.
3
Calculate ways to climb each step
Use a for loop with variable i from 2 to n inclusive. Inside the loop, set ways[i] to ways[i - 1] + ways[i - 2] to calculate the number of ways to reach step i.
DSA Typescript
Hint
Use a loop from 2 to n and update ways[i] by adding the two previous values.
4
Print the total number of ways
Print the value of ways[n] to display the total number of ways to climb n steps.
DSA Typescript
Hint
Use console.log(ways[n]) to print the result.
Practice
(1/5)
1. What does the Climbing Stairs problem ask you to find? Given n stairs, how many distinct ways can you climb to the top if you can take 1 or 2 steps at a time?
easy
A. The maximum number of steps you can take at once
B. The minimum number of steps to reach the top
C. The number of stairs you skip
D. The total number of distinct ways to reach the top
Solution
Step 1: Understand the problem statement
The problem asks for the count of different ways to climb n stairs taking 1 or 2 steps at a time.
Step 2: Identify what is being asked
We want the total number of distinct sequences of 1-step and 2-step moves that sum to n.
Final Answer:
The total number of distinct ways to reach the top -> Option D
Quick Check:
Count ways = total distinct sequences [OK]
Hint: Count sequences of 1 or 2 steps to reach n [OK]
Common Mistakes:
Confusing number of ways with minimum steps
Thinking about maximum steps allowed
Counting skipped stairs instead of ways
2. Which of the following TypeScript function signatures correctly represents a function to solve the Climbing Stairs problem?
easy
A. function climbStairs(n: number): number
B. function climbStairs(n: string): string
C. function climbStairs(): void
D. function climbStairs(n: number): void
Solution
Step 1: Identify input and output types
The input is the number of stairs (number), output is the count of ways (number).
Step 2: Match function signature
Only the signature with input number and output number matches the problem requirements.
Final Answer:
function climbStairs(n: number): number -> Option A
Quick Check:
Input and output types match problem [OK]
Hint: Input and output both must be numbers [OK]
Common Mistakes:
Using string type for number input
Function returning void instead of number
No input parameter in function
3. What is the output of the following TypeScript code?
function climbStairs(n: number): number {
if (n <= 2) return n;
let a = 1, b = 2;
for (let i = 3; i <= n; i++) {
let temp = a + b;
a = b;
b = temp;
}
return b;
}
console.log(climbStairs(4));
medium
A. 3
B. 5
C. 4
D. 6
Solution
Step 1: Trace initial values and loop
For n=4, start with a=1, b=2. Loop i=3 to 4:
- i=3: temp=1+2=3, a=2, b=3
- i=4: temp=2+3=5, a=3, b=5
Step 2: Return final value
Return b=5 as the number of ways to climb 4 stairs.
Final Answer:
5 -> Option B
Quick Check:
Ways for 4 stairs = 5 [OK]
Hint: Use Fibonacci-like addition for steps count [OK]
Common Mistakes:
Returning a instead of b
Off-by-one error in loop
Incorrect initial values for a and b
4. Identify the error in this TypeScript code for climbing stairs:
function climbStairs(n: number): number {
if (n == 1) return 1;
let a = 1, b = 2;
for (let i = 2; i <= n; i++) {
let temp = a + b;
a = b;
b = temp;
}
return b;
}
medium
A. Initial values of a and b are incorrect
B. Return statement should return a instead of b
C. Loop starts at wrong index causing off-by-one error
D. Missing base case for n == 2
Solution
Step 1: Analyze loop start and base cases
Loop starts at i=2 but initial values assume i=3 start. This causes extra iteration and wrong count.
Step 2: Correct loop start
Loop should start at i=3 to align with initial values a=1, b=2 and base case for n=2.
Final Answer:
Loop starts at wrong index causing off-by-one error -> Option C
Quick Check:
Loop index must match initial conditions [OK]
Hint: Check loop start matches base cases [OK]
Common Mistakes:
Starting loop at 2 instead of 3
Ignoring base case for n=2
Swapping a and b updates
5. You want to find the number of ways to climb 10 stairs but now you can take 1, 2, or 3 steps at a time. Which modification to the climbing stairs logic is correct?
hard
A. Use dp[i] = dp[i-1] + dp[i-2] + dp[i-3] with base dp[0]=1, dp[1]=1, dp[2]=2
B. Use dp[i] = dp[i-1] * dp[i-2] * dp[i-3] with base dp[0]=1, dp[1]=1, dp[2]=2
C. Use dp[i] = dp[i-1] + dp[i-2] only with base dp[0]=1, dp[1]=1
D. Use dp[i] = dp[i-1] + dp[i-3] with base dp[0]=1, dp[1]=1, dp[2]=2
Solution
Step 1: Understand the new step options
Now steps can be 1, 2, or 3 at a time, so ways to reach i depend on previous 3 states.
Step 2: Formulate recurrence relation
Number of ways to reach step i = sum of ways to reach i-1, i-2, and i-3.
Step 3: Set base cases
dp[0]=1 (one way to stand still), dp[1]=1, dp[2]=2 (1+1 or 2 steps).
Final Answer:
Use dp[i] = dp[i-1] + dp[i-2] + dp[i-3] with base dp[0]=1, dp[1]=1, dp[2]=2 -> Option A
Quick Check:
Sum previous 3 states for new step sizes [OK]
Hint: Sum ways from last 3 steps for 1,2,3 moves [OK]
Common Mistakes:
Multiplying previous states instead of adding
Ignoring the 3-step option
Wrong base cases for dp array
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.