首页 > 试题广场 >

跳台阶问题,每次只能跳1个台阶或者2个台阶,n个台阶共有多少

[问答题]

跳台阶问题,每次只能跳1个台阶或者2个台阶,n个台阶共有多少种方式

# 青蛙一次可跳一个台阶或两个台阶 其实就是求斐波拉切数列
# -*- coding:utf-8 -*-
class Solution(object):
    def climbStairs(self, n):
        res = [0, 1]
        if n < 2:
            return res[n]
        a, b, i = 0, 1, 1
        while i <= n:
            c = a + b
            a = b
            b = c
            i += 1
        return c

发表于 2019-07-21 14:27:49 回复(0)
class Solution(object):
    def climbStairs(self, n):
        res = [0, 1]
        if n < 2:
            return res[n]
        a, b, i = 0, 1, 1
        while i <= n:
            c = a + b
            a = b
            b = c
            i += 1
        return c

发表于 2019-09-23 21:43:14 回复(0)
 class Solution:
    def climbStairs1(self, n: int) -> int:
        # Each time you can either climb 1 or 2 steps.
        if n == 1:
            return 1
        res = [0 for i in range(n)]
        res[0], res[1] = 1, 2
        for i in range(2, n):
            res[i] = res[i-1] + res[i-2]
        return res[-1]

    def climbStairs(self, n: int) -> int:
        if n == 1:
            return 1
        a, b = 1, 2
        for i in range(2, n):
            tmp = b
            b = a+b
            a = tmp
        return b

    # Be careful to use the recursive version in case of exceeding the time limit.
    def climbStairs_2(self, n: int) -> int:
        if n == 1:
            return 1
        if n == 2:
            return 2
        return self.climbStairs(n-1) + self.climbStairs(n-2)



发表于 2019-07-04 16:55:10 回复(0)

你想要的斐波那契数列的所有的内容都在这

发表于 2019-06-02 20:24:14 回复(0)