剑指offer-JZ8 跳台阶

难度:简单    

考点: 递归

问题描述:

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

解题思路:

类似斐波那契数列,找规律,发现是递归的,同斐波那契,如果直接写递归,时间复杂度过高,所以依然用循环来做

# -*- coding:utf-8 -*-
class Solution:
    def jumpFloor(self, number):
        # write code here
        # number = 0 不存在
        # number = 1 1种
        # number = 2 2种
        # number = 3 3种  11 12 21
        # number = 4   5种  1111 121 112 211 22
        # 通过找规律发现  f(n) = f(n-1) + f(n-2)  当n>2
        # n = 2 f(2)=2
        # n = 1 f(1)=1
        if number < 1:
            return 0
        if number == 1:
            return 1
        if number == 2:
            return 2
        a = 1
        b = 2
        ret = 0
        for i in range(3,number+1):
            ret = a+b
            a = b
            b = ret
        return ret

 

posted @ 2021-07-14 21:38  LLLLgR  阅读(33)  评论(0编辑  收藏  举报