# 第一种实现方法defjump_floor(n):if n <1:return0if n ==1:return1if n ==2:return2if n >2:
ret =0
a =2
b =1for i inrange(3, n +1):
ret = a + b
b = a
a = ret
return ret
print(jump_floor(4))
# 第二种实现方法classSolution:defjump_floor(self, number):if number ==0or number ==1or number ==2:return number
result =[1,2]for i inrange(3, number+1):
result.append(result[i -2]+ result[i -3])return result[-1]
obj = Solution()print(obj.jump_floor(4))
defjump_floor(number):if number <1:return0if number ==1:return1if number ==2:return2if number >2:
ret =1# 注意变成了相乘,ret不能取0
a =2for i inrange(3, number +1):
ret =2* a
a = ret
return ret
print(jump_floor(5))
'''
上面其实隐含一个条件:f(0)=1 为什么?因为f(1)=2f(0),f(1)=1,所以f(0=1)
只是我们这次只会用到较大的一项,所以缩小范围照样可以!
'''defjump_floor(number):if number <1:return0if number ==0:return1if number ==1:return1
ret =1
a =1for i inrange(2, number +1):
ret =2* a
a = ret
return ret
print(jump_floor(5))
# 或者写成classSolution:defjump_floor(self, number):if number ==0:return1if number ==1:return1return2* self.jump_floor(number-1)