假设你正在爬楼梯。需要 n 阶你才能到达楼顶。
每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?
注意:给定 n 是一个正整数。
示例 1:
输入: 2
输出: 2
解释: 有两种方法可以爬到楼顶。
- 1 阶 + 1 阶
- 2 阶
示例 2:
输入: 3
输出: 3
解释: 有三种方法可以爬到楼顶。
3. 1 阶 + 1 阶 + 1 阶
4. 1 阶 + 2 阶
5. 2 阶 + 1 阶
思路
因为只能走1或2步,
第n种的方法就是第n-1种中的每一种方法最后加1和第n-2种中的每一种方法最后加2
已4为例
3 每种方法最后+1
1+ 1+1+1
1+2+1
2+1+1
2每种方法最后+2
1+1+2
2+2
合起来就是第4种
直接用斐波那契数列的解法
def climbStairs(self, n):
a=1
b=1
i=1
while(i!=n):
b,a=a,a+b
i=i+1
return a