牛客-剑指offer 08 | 跳台阶

题目描述

一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。

题解

跳上1级台阶:1种

跳上2级台阶:2种

跳上3级台阶:

  • 最后跳1级,2种
  • 最后跳2级,1种


跳上n级台阶:

  • 最后跳1级,f(n-1) 种
  • 最后跳2级,f(n-2) 种

即 f(n) = f(n-1) + f(n-2)

看到这里你肯定会发现这其实就是“斐波那契数列”的变种,不了解的可以看我这篇文章 牛客-剑指offer 07 | 斐波那契数列,直接上代码:

# -*- coding:utf-8 -*-
class Solution:
    def jumpFloor(self, number):
        # write code here
        if number == 1:
            return 1
        elif number == 2:
            return 2
        else:
            n = 0
            n1 = 1
            n2 = 2
            for i in range(3, number+1):
                n = n1 + n2
                n1 = n2
                n2 = n
            return n
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章