w3resource

JavaScript: Distinct ways to climb the staircase

JavaScript Math: Exercise-104 with Solution

A staircase consists of N steps, and you are given the choice of climbing one step at a time or two steps at a time.
Write a JavaScript program to find distinct ways to climb the staircase.

Example:
Number of stairs = 2
There are 2 ways to climb the stairs: (1,1) and (2)
Number of stairs = 3
There are 3 ways to climb the stairs: (1,1,1), (2,1) and (1,2)

Visual Presentation:

JavaScript Math: Distinct ways to climb the staircase.

Test Data:
(2) -> 2
(3) -> 3

Sample Solution:

Solution-1

JavaScript Code:

/**
 * Function to calculate the number of ways to climb a staircase with n steps.
 * @param {number} n - The number of steps in the staircase.
 * @returns {number} - The number of ways to climb the staircase.
 */
function test(n) {
    var x = 0, // Variable to store the previous Fibonacci number
        y = 1; // Variable to store the current Fibonacci number
    
    // Loop to calculate the Fibonacci number iteratively
    while (n-- > 0) {
        y = x + y; // Calculate the next Fibonacci number
        x = y - x; // Update the previous Fibonacci number
    }
    
    return y; // Return the current Fibonacci number
}

n = 2;
console.log("Number of stairs = " + n);
console.log("Number of ways to climb the said number of stairs: " + test(n));

n = 3;
console.log("Number of stairs = " + n);
console.log("Number of ways to climb the said number of stairs: " + test(n));

Output:

Number of stairs = 2

Flowchart:

JavaScript: Distinct ways to climb the staircase.

Live Demo:

See the Pen javascript-math-exercise-104 by w3resource (@w3resource) on CodePen.


Solution-2

JavaScript Code:

/**
 * Function to calculate the number of ways to climb a staircase with n steps using dynamic programming.
 * @param {number} n - The number of steps in the staircase.
 * @returns {number} - The number of ways to climb the staircase.
 */
function test(n) {
    nums = []; // Array to store the number of ways to climb each step
    
    nums[1] = 1; // Number of ways to climb 1 step
    nums[2] = 2; // Number of ways to climb 2 steps
    
    // Loop to calculate the number of ways to climb each step from 3 to n
    for (i = 3; i <= n; i++) {
        nums[i] = nums[i - 1] + nums[i - 2]; // Number of ways to climb the current step
    }
    
    return nums[n]; // Return the number of ways to climb the nth step
}

n = 2;
console.log("Number of stairs = " + n);
console.log("Number of ways to climb the said number of stairs: " + test(n));

n = 3;
console.log("Number of stairs = " + n);
console.log("Number of ways to climb the said number of stairs: " + test(n));

Output:

Number of stairs = 2
Number of ways to climb the said number of stairs: 2
Number of stairs = 3
Number of ways to climb the said number of stairs: 3

Flowchart:

JavaScript: Distinct ways to climb the staircase.

Live Demo:

See the Pen javascript-math-exercise-104-1 by w3resource (@w3resource) on CodePen.


Improve this sample solution and post your code through Disqus.

Previous: Product of two non-negative integers as strings.
Next: Javascript Array Exercises

Next: Conversion of integers to English words.

What is the difficulty level of this exercise?

Test your Programming skills with w3resource's quiz.



Follow us on Facebook and Twitter for latest update.