本文摘自php中文网,作者不言,侵删。
这篇文章主要介绍了Python解决N阶台阶走法问题的方法,简单描述了走台阶问题,并结合实例形式分析了Python使用递归与递推算法解决走台阶问题的相关操作技巧,需要的朋友可以参考下本文实例讲述了Python解决N阶台阶走法问题的方法。分享给大家供大家参考,具体如下:
题目:一栋楼有N阶楼梯,兔子每次可以跳1、2或3阶,问一共有多少种走法?
Afanty的分析:
遇到这种求规律的问题,自己动动手推推就好,1阶有几种走法?2阶有几种走法?3阶有几种走法?4阶有几种走法?5阶有几种走法?
对吧,规律出来了!
易错点:这不是组合问题,因为第1次走1阶、第2次走2阶不同于 第1次走2阶、第2次走1阶
下面是Python的递归实现代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | def allMethods(stairs):
if isinstance (stairs, int ) and stairs > 0 :
basic_num = { 1 : 1 , 2 : 2 , 3 : 4 }
if stairs in basic_num.keys():
return basic_num[stairs]
else :
return allMethods(stairs - 1 ) + allMethods(stairs - 2 ) + allMethods(stairs - 3 )
else :
print 'the num of stair is wrong'
return False
|
当然也可以用非递归的方法来实现,下面就是基于递推法的代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | def allMethod(stairs):
if isinstance (stairs, int ) and stairs > 0 :
h1,h2,h3,n = 1 , 2 , 4 , 4
basic_num = { 1 : 1 , 2 : 2 , 3 : 4 }
if stairs in basic_num.keys():
return basic_num[stairs]
else :
while n < = stairs:
temp = h1
h1 = h2
h2 = h3
h3 = temp + h1 + h2
return h3
else :
print 'the num of stair is wrong'
return False
|
好的,以上就是分别用了递归和递推法实现的过程。
相关推荐:
python编程通过蒙特卡洛法计算定积分详解
python中subprocess批量执行linux命令
以上就是Python解决N阶台阶走法问题的方法的详细内容,更多文章请关注木庄网络博客!!
相关阅读 >>
Python怎么打印变量
Python中集合中的元素是否可以重复
Python格式化输出是什么意思
Python语言基础都有哪些
关于Python中的中文编码问题
Python中5种连接字符串的方法
Python与xml的结合实践教程
Python线程下事件用法的简单介绍
Python可以引用另一个文件的函数吗
使用pandas进行数据处理之 dataframe篇
更多相关阅读请进入《Python》频道 >>
人民邮电出版社
python入门书籍,非常畅销,超高好评,python官方公认好书。
转载请注明出处:木庄网络博客 » Python解决N阶台阶走法问题的方法