Python解决N阶台阶走法问题的方法分析


Posted in Python onDecember 28, 2017

本文实例讲述了Python解决N阶台阶走法问题的方法。分享给大家供大家参考,具体如下:

题目:一栋楼有N阶楼梯,兔子每次可以跳1、2或3阶,问一共有多少种走法?

Afanty的分析:

遇到这种求规律的问题,自己动动手推推就好,1阶有几种走法?2阶有几种走法?3阶有几种走法?4阶有几种走法?5阶有几种走法?

对吧,规律出来了!

易错点:这不是组合问题,因为第1次走1阶、第2次走2阶不同于 第1次走2阶、第2次走1阶

下面是Python的递归实现代码:

def allMethods(stairs):
  '''''
  :param stairs:the numbers of stair
  :return:
  '''
  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

当然也可以用非递归的方法来实现,下面就是基于递推法的代码:

def allMethod(stairs):
  '''''递推实现
  :param stairs: the amount of stair
  :return:
  '''
  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 相关文章推荐
在Docker上部署Python的Flask框架的教程
Apr 08 Python
Python实现自动添加脚本头信息的示例代码
Sep 02 Python
python好玩的项目—色情图片识别代码分享
Nov 07 Python
python调用Delphi写的Dll代码示例
Dec 05 Python
Sanic框架应用部署方法详解
Jul 18 Python
从0开始的Python学习016异常
Apr 08 Python
python字典的遍历3种方法详解
Aug 10 Python
利用Python绘制Jazz网络图的例子
Nov 21 Python
Windows下Anaconda安装、换源与更新的方法
Apr 17 Python
keras训练浅层卷积网络并保存和加载模型实例
Jul 02 Python
总结Pyinstaller的坑及终极解决方法(小结)
Sep 21 Python
python语言实现贪吃蛇游戏
Nov 13 Python
Python实现嵌套列表去重方法示例
Dec 28 #Python
Python登录并获取CSDN博客所有文章列表代码实例
Dec 28 #Python
python 寻找优化使成本函数最小的最优解的方法
Dec 28 #Python
python机器学习案例教程——K最近邻算法的实现
Dec 28 #Python
Python实现螺旋矩阵的填充算法示例
Dec 28 #Python
wxPython的安装图文教程(Windows)
Dec 28 #Python
Python制作豆瓣图片的爬虫
Dec 28 #Python
You might like
PHP使用静态方法的几个注意事项
2014/09/16 PHP
CodeIgniter基于Email类发邮件的方法
2016/03/29 PHP
Flash对联广告的关闭按钮讨论
2007/01/30 Javascript
深入Javascript函数、递归与闭包(执行环境、变量对象与作用域链)使用详解
2013/05/08 Javascript
如何使Chrome控制台支持多行js模式——意外发现
2013/06/13 Javascript
JavaScript中instanceof运算符的用法总结
2013/11/19 Javascript
javascript中数组的concat()方法使用介绍
2013/12/18 Javascript
js Dialog 去掉右上角的X关闭功能
2014/04/23 Javascript
仿JQuery输写高效JSLite代码的一些技巧
2015/01/13 Javascript
JavaScript中使用Callback控制流程介绍
2015/03/16 Javascript
JS实现控制表格只显示行边框或者只显示列边框的方法
2015/03/31 Javascript
avalonjs制作响应式瀑布流特效
2015/05/06 Javascript
实例详解JavaScript获取链接参数的方法
2016/01/01 Javascript
jQuery实现圣诞节礼物动画案例解析
2016/12/25 Javascript
新闻上下滚动jquery 超简洁(必看篇)
2017/01/21 Javascript
JS写XSS cookie stealer来窃取密码的步骤详解
2017/11/20 Javascript
Webpack的dll功能使用
2018/06/28 Javascript
解决vue-quill-editor上传内容由于图片是base64的导致字符太长的问题
2018/08/20 Javascript
Three.js实现3D机房效果
2018/12/30 Javascript
JS使用正则表达式提交页面验证的代码
2019/10/16 Javascript
Python的Django框架中的数据过滤功能
2015/07/17 Python
Win10下python3.5和python2.7环境变量配置教程
2018/09/18 Python
python通过paramiko复制远程文件及文件目录到本地
2019/04/30 Python
Python Numpy计算各类距离的方法
2019/07/05 Python
python将三维数组展开成二维数组的实现
2019/11/30 Python
Python结合Window计划任务监测邮件的示例代码
2020/08/05 Python
医学专业毕业生个人的求职信
2013/12/04 职场文书
爸爸的花儿落了教学反思
2014/02/20 职场文书
学校实习推荐信
2015/03/27 职场文书
《叶问2》观后感
2015/06/15 职场文书
公司会议开幕词
2016/03/03 职场文书
2019年12月24日平安夜祝福语集锦
2019/12/24 职场文书
java调用Restful接口的三种方法
2021/08/23 Java/Android
Java字符串逆序方法详情
2022/03/21 Java/Android
为什么MySQL8新特性会修改自增主键属性
2022/04/18 MySQL
Mybatis-Plus 使用 @TableField 自动填充日期
2022/04/26 Java/Android