一、假设你正在爬楼梯。需要 n 阶你才能到达楼顶
题目描述:
假设你正在爬楼梯。需要 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 阶
class Solution:
def climbStairs(self, n):
"""
:type n: int
:rtype: int
"""
if n < 0:
return 0
if n == 1 :
return 1
elif n == 2 :
return 2
else:
return self.climbStairs(n-1) + self.climbStairs(n-2)
#递归是很耗时的
两种方法,一种是递归,一种是循环。递归的写法简单但性能消耗大,循环的写法也很简单,但性能比递归好太多:
通过分析,结果序列是:1 2 3 5 8 13 21 ......
class Solution:
def climbStairs(self, n):
"""
:type n: int
:rtype: int
"""
if n < 0:
return 0
if n == 1 :
return 1
elif n == 2 :
return 2
else:
a = 1
b = 2
for k in range(3, n+1):
result = a + b
a = b
b = result
return result
原文:https://www.cnblogs.com/always-fight/p/10283352.html