JZ8 跳台阶
如果只有一级台阶,则只有一种跳法,若有两级台阶,则有两种跳法(1 一次跳一级,跳两次;2 一次跳两级,跳两次)
把n级台阶的跳法看作n的函数记为f(n)
若第一次跳一级,则后面的跳法为f(n-1)种
若第一次跳两级,则后面的跳法为f(n-2)种
所以跳n级台阶共有f(n) = f(n-1)+f(n-2)种跳法,为斐波那契数列
class Solution:
def jumpFloor(self, number):
if number <=2:
return number
n_1 = 1
n_2 = 2
for n in range(3, number+1):
res = n_1 + n_2
n_1 = n_2
n_2 = res
return res
扩展问题
JZ9 跳台阶扩展问题
归纳总结 得出
f
(
n
)
=
2
n
−
1
f(n) = 2^{n-1}
f(n)=2n−1
class Solution:
def jumpFloorII(self, number):
return 2**(number-1)