题目描述
- 一只青蛙一次可以跳上1级台阶,也可以跳上2级。
- 求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)
理解
- 完全蒙啊
- 那我们就用特例先分析一下
如果有1级台阶,那有1种
如果有2级台阶,那有2种
如果有3级台阶,那一定是先跳1级或者先跳2级,再跳到3级台阶上,跳1级后有2种,跳2级后有1种,共有3种跳法 - 如果是n级台阶呢,假设有F(n)种跳法,那一定也是先跳1级或者先跳2级,再继续跳到n级台阶,跳1级后有F(n-1)种,跳2级后有F(n-2)种,故有F(n)=F(n-1)+F(n-2)
- 可以发现本质上就是斐波那契数列问题
解题思路
和斐波那契数列写法一样
思路1
class Solution:
def jumpFloor(self, number):
if number == 1:
return 1
elif number == 2:
return 2
else:
a = 1
b = 2
for i in range(2,number):
a,b = b,a+b
return b
或者
class Solution:
def jumpFloor(self, number):
a=[1,2]
if number<=2:
return a[number-1]
else:
for i in range(2,number):
a.append(a[i-1]+a[i-2])
return a[number-1]