17 Climbing Stairs 字节阿里面试题

96 阅读1分钟

Climbing Stairs

递归解法会出现溢出栈的报错

解题思路

  1. 最简单方法采用递归,如果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)
};

迭代解法

  1. 迭代无非就是记录前两步的解法,举例上 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
};