#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param number int整型
# @return int整型
#
class Solution:
def jumpFloor(self , number: int) -> int:
# 递归形式:
# if number <= 1:
# return 1
# # 走上最后一梯只有两种方式,一种是从f(n-1)再向上跳一级,另一种是从f(n-2)再向上跳两级。所以最后一梯的跳法应该是前面两种跳法的总和。
# return self. jumpFloor(number - 1) + self.jumpFloor(number - 2)
# 初始状态
# 只有一级台阶的时候只有一种跳法
f1 = 1
# 有2级台阶的时候有2种跳法
f2 = 2
if number == 1:
return f1
if number == 2:
return f2
# 从有1级台阶和2级台阶的情况向后递推。
fn_jian_1 = f2
fn_jian_2 = f1
for _ in range(3, number+1):
# 走上最后一梯只有两种方式,一种是从f(n-1)再向上跳一级,另一种是从f(n-2)再向上跳两级。所以最后一梯的跳法应该是前面两种跳法的总和。
fn = fn_jian_1 + fn_jian_2
fn_jian_2 = fn_jian_1
fn_jian_1 = fn
return fn