剑指offer刷题记录之跳台阶

1. 题目描述

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

2. 分析(递归)

画个简单的示意图,将每次的选择画成二叉树的样子(每次两种选择),从下面的图可以看出,只要保证从根节点到每一个叶子节点的和为n就可。
举下面几个例子,可以发现,从n=3开始,每次除去第一次选择之后的子树都与前两个子树一致。
相当于变相考察斐波那列数列,这里就参考前面解斐波那列数列的四种解题方法。
在这里插入图片描述

3. 代码

class Solution:
    def jumpFloor(self, number):
        # write code here
        if number == 1:
            return 1
        elif number == 2:
            return 2
        elif number > 2:
            f1 = 1
            f2 = 2
            for i in range(3, number+1):
                f3 = f1 + f2
                f1 = f2
                f2 = f3
            return f3
发布了49 篇原创文章 · 获赞 104 · 访问量 37万+

猜你喜欢

转载自blog.csdn.net/xijuezhu8128/article/details/104691322