Climbing Stairs
递归解法会出现溢出栈的报错
解题思路
- 最简单方法采用递归,如果1个台阶的话就只用一种,2个台阶就只有2中走法,3个台阶即第一次走两步或一步台阶方法的总和
climbStairs(n - 1) + climbStairs(n - 2)
代码
/**
* @param {number} n
* @return {number}
*/
var climbStairs = function(n) {
if(n <= 2) {
return n
}
return climbStairs(n - 1) + climbStairs(n - 2)
};
迭代解法
- 迭代无非就是记录前两步的解法,举例上 3阶台阶走法 即 pre = 1 cur = 2 3阶为 pre + cur
代码
/**
* @param {number} n
* @return {number}
*/
var climbStairs = function(n) {
if(n <= 2) {
return n
}
let pre = 1
let cur = 2
while(n > 2) {
let temp = cur
cur = pre + cur
pre = temp
n = n - 1
}
return cur
};