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