码迷,mamicode.com
首页 > 其他好文 > 详细

爬楼梯问题

时间:2019-01-17 20:12:20      阅读:161      评论:0      收藏:0      [点我收藏+]

标签:pre   循环   range   多少   方法   楼梯   描述   div   一个   

一、假设你正在爬楼梯。需要 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

 

爬楼梯问题

标签:pre   循环   range   多少   方法   楼梯   描述   div   一个   

原文地址:https://www.cnblogs.com/always-fight/p/10283352.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!