41.LeetCode70.爬楼梯

2018-10-09  本文已影响10人  月牙眼的楼下小黑

经观察分析,当 阶数 = n 时, 方法数等于f(n-1)f(n-2), 不难写出如下递归代码。

class Solution(object):
    def climbStairs(self, n):
        """
        :type n: int
        :rtype: int
        """
        if(n==0):
            return 0
        elif(n==1):
            return 1
        else return climbStairs(n-1) + climbStairs(n-2)

f(n) = f(n-1) + f(n-2)可知:从f(1) = 1,f(2) = 2开始, 可以依次递推出 f(3),f(4),.....直到 f(n) 的值 。模仿这个从小到大,依次递推的过程,不难实现如下代码:

class Solution(object):
    def climbStairs(self, n):
        """
        :type n: int
        :rtype: int
        """
        if(n==1):
            return 1
        elif(n==2):
            return 2
        else:
            dp = []
            dp.extend([1,2])
            while(len(dp)<n):
                dp.append(dp[-1] + dp[-2])
            return dp[-1]

暂略。

上一篇 下一篇

猜你喜欢

热点阅读