本文小编为大家详细介绍“python怎么解决青蛙跳台阶问题”,内容详细,步骤清晰,细节处理妥当,希望这篇“python怎么解决青蛙跳台阶问题”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。
# 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
# -*- coding:utf-8 -*-
class Solution:
# 笨办法, 三层遍历, 找出每层所有排列, 再剔除
def jumpFloor(self, number):
if number%2==0:
min = number//2
else:
min = number//2+1
max = number
n = 0
for num in range(min, max+1):
for i in range(2**num):
k = i
temp = 0
for j in range(num):
m=k-(2*int(k/2))
k = int(k/2)
if m==0:
temp += 1
else:
temp += 2
if temp==number:
n+=1
return n
# 递归实现
def rec_jump(self, n):
if n==1:
return 1
elif n==2:
return 2
else:
return self.rec_jump(n-1)+self.rec_jump(n-2)
# 非递归实现, 数学推理法实现f(n)=f(n-1)+f(n-2) --> sum=t1+t2
def lt_jump(self, n):
t1 = 1
t2 = 2
if n == 1:
return 1
elif n == 2:
return 2
else:
for i in range(2,n):
sum = t1 + t2
t1 = t2
t2 = sum
return sum
# 列表实现
def lt_list_jump(self,n):
res_arr = [1,2]
for i in range(2,n):
res_arr.append(res_arr[i-1]+res_arr[i-2])
return res_arr[n-1]
if __name__ == '__main__':
sl = Solution()
print(sl.jumpFloor(15))
print(sl.rec_jump(15))
print(sl.lt_jump(15))
print(sl.lt_list_jump(15))
读到这里,这篇“python怎么解决青蛙跳台阶问题”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注亿速云行业资讯频道。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
原文链接:https://my.oschina.net/except/blog/4588589