Skip to content

70 爬楼梯 #17

@sailei1

Description

@sailei1

假设你正在爬楼梯。需要 n 阶你才能到达楼顶。

每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?

注意:给定 n 是一个正整数。

示例 1:

输入: 2
输出: 2
解释: 有两种方法可以爬到楼顶。

  1. 1 阶 + 1 阶
  2. 2 阶
    示例 2:

输入: 3
输出: 3
解释: 有三种方法可以爬到楼顶。

  1. 1 阶 + 1 阶 + 1 阶
  2. 1 阶 + 2 阶
  3. 2 阶 + 1 阶

解法

1 2 3 4 5 6 7
1 2 3 5 8 13 21
3的值 (3=1+2) 1 的值+2的值
4的值( 5=2+3) 2的值加3的值

/**
 * @param {number} n
 * @return {number}
 */
var climbStairs = function(n) {
      
     // console.log(n);
      if(n==1||n==2){
          return n;
      }
      // if(n>2){
      //     n--;
      //     return climbStairs(n)+climbStairs(n-1);
      // }
      // 递归超时了,可能效率不行,测试通过不了  只能循环了。
     let b1=1,b2=2,sum=0;
      for(let i=2;i<n;i++){
            sum=b1+b2;
            b1=b2;
            b2=sum; 
      }
    return sum;
     
};

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions