#变态跳台阶
#青蛙一次可以跳1阶、2阶...n阶
#n级台阶总共有多少种跳法
#
# 台阶 跳法
# 1 1
# 2 2
# 3 4
# 4 8
# 。。。
# n 2^(n-1)
# f(n) = f(n-1) + f(n-2) + ... + f(1)
# f(n-1) = f(n-2) + f(n-3) + ... + f(1)
# f(n) = 2f(n-1)
#公式
class Solution1:
def jumpFloorII(self,n):
if n<1:
return 0
else:
return pow(2,(n-1))
#递归
class Solution2:
def jumpFloorII(self,n):
if n<1:
return 0
elif n==1:
return n
else:
return 2*self.jumpFloorII(n-1)
#循环
class Solution3:
def jumpFloorII(self,n):
if n<1:
return 0
elif n==1:
return 1
else:
a = 1
ret = 0
for i in range(2,n+1):
ret = 2 * a
a = ret
return ret
if __name__ == '__main__':
s1 = Solution1()
print(s1.jumpFloorII(3))
s2 = Solution2()
print(s2.jumpFloorII(3))
s3 = Solution3()
print(s3.jumpFloorII(3))
剑指offer——变态跳台阶
本文详细解析了变态跳台阶问题的解决方法,介绍了通过公式、递归和循环三种方式求解n级台阶总共有多少种跳法的问题。并提供了Python代码实现,包括Solution1类使用公式直接计算,Solution2类采用递归方式,以及Solution3类运用循环迭代方法。
摘要由CSDN通过智能技术生成