Skip to content

Instantly share code, notes, and snippets.

@scriptonian
Created February 3, 2018 22:33
Show Gist options
  • Save scriptonian/8569511163b0d7b1661303a71c11237c to your computer and use it in GitHub Desktop.
Save scriptonian/8569511163b0d7b1661303a71c11237c to your computer and use it in GitHub Desktop.
Climbing Stairs - Dynamic Programming
/*
Using Recursive Programming
*/
function climbStairs(n) {
return (n < 2) ? n : climbStairs(n - 1) + climbStairs(n - 2);
}
//var numOfWays = climbStairs(3);
//console.log(numOfWays);
/*
Using Dynamic Programming
*/
function climbStairsDP(n) {
var steps = [];
steps[0] = 1;
steps[1] = 2;
//loop from 2 to N
for(var i = 2; i < n; i++) {
steps[i] = steps[i - 1] + steps[i - 2];
}
return steps[n - 1];
}
var numOfWays = climbStairsDP(10);
console.log(numOfWays);
/*
Using Dynamic Programming. Extend for up to 3 steps
*/
function climbStairsDPExtended(n) {
var steps = [];
steps[0] = 1;
steps[1] = 2;
steps[2] = 4;
for(var i = 3; i < n; i++) {
steps[i] = steps[i - 1] + steps[i - 2] + steps[i - 3];
}
return steps[n - 1];
}
//var numOfWays = climbStairsDPExtended(5);
//console.log(numOfWays);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment