题目翻译 你现在在爬楼梯,爬到顶要n阶。每次你可以爬1或2阶楼梯,你有多少种不同的爬法可以到顶?其实是斐波那契数列 class Solution(object): def climbStairs(self, n): """ :type n: int :rtype: int """ pre = cur = 1 for i in xrange(1, n): pre, cur = cur, pre+cur return cur 动态规划 当有n个台阶时,可供选择的走法可以分两类: 1,先跨一阶再跨完剩下n-1阶; 2,先跨2阶再跨完剩下n-2阶。所以n阶的不同走法的数目是n-1阶和n-2阶的走法数的和。 这个时候如果用递归,复杂度会太大而无法AC,所以用动态规划记录历史数据,即可 class Solution(object): def climbStairs(self, n): """ :type n: int :rtype: int """ if n == 0 or n == 1 or n == 2: return n steps = [1, 1] for i in xrange(2, n+1): steps.append(steps[i-1] + steps[i-2]) return steps[n]