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 相关文章推荐
Python 调用VC++的动态链接库(DLL)
Sep 06 Python
python 实现堆排序算法代码
Jun 05 Python
python使用递归解决全排列数字示例
Feb 11 Python
python使用pyqt写带界面工具的示例代码
Oct 23 Python
Python带动态参数功能的sqlite工具类
May 26 Python
numpy使用fromstring创建矩阵的实例
Jun 15 Python
python 读取修改pcap包的例子
Jul 23 Python
python栈的基本定义与使用方法示例【初始化、赋值、入栈、出栈等】
Oct 24 Python
Python warning警告出现的原因及忽略方法
Jan 31 Python
Windows 下python3.8环境安装教程图文详解
Mar 11 Python
Python使用socketServer包搭建简易服务器过程详解
Jun 12 Python
用基于python的appium爬取b站直播消费记录
Apr 17 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
Content-type 的说明
2006/10/09 PHP
php cli模式学习(PHP命令行模式)
2013/06/03 PHP
php的hash算法介绍
2014/02/13 PHP
PHP快速排序算法实现的原理及代码详解
2019/04/03 PHP
js一般方法改写成面向对象方法的无限级折叠菜单示例代码
2013/07/04 Javascript
JQuery中使用Ajax赋值给全局变量异常的解决方法
2014/01/10 Javascript
js中document.write使用过程中的一点疑问解答
2014/03/20 Javascript
详解Bootstrap四种图片样式
2016/01/04 Javascript
轻松搞定jQuery.noConflict()
2016/02/15 Javascript
es6的数字处理的方法(5个)
2017/03/16 Javascript
详解webpack与SPA实践之开发环境搭建
2017/12/18 Javascript
Vue.js中使用iView日期选择器并设置开始时间结束时间校验功能
2018/08/12 Javascript
推荐几个不错的console调试技巧实现
2019/12/20 Javascript
为react组件库添加typescript类型提示的方法
2020/06/15 Javascript
Vue数组响应式操作及高阶函数使用代码详解
2020/08/01 Javascript
Python栈类实例分析
2015/06/15 Python
python3+PyQt5实现文档打印功能
2018/04/24 Python
PyQt5组件读取参数的实例
2019/06/25 Python
django基于restframework的CBV封装详解
2019/08/08 Python
Python 导入文件过程图解
2019/10/15 Python
python实现对变位词的判断方法
2020/04/05 Python
Python3 selenium 实现QQ群接龙自动化功能
2020/04/17 Python
HTML5新增加的功能详解
2016/09/05 HTML / CSS
激光脱毛、蓝光和护肤:Tria Beauty
2019/03/28 全球购物
瑞典度假品牌:OAS
2019/05/28 全球购物
编码转换,怎样实现将GB2312编码的字符串转换为ISO-8859-1编码的字符串
2014/01/07 面试题
介绍一下except的用法和作用
2015/01/22 面试题
个人简历自我评价
2014/01/06 职场文书
秸秆管理实施方案
2014/03/15 职场文书
毕业生求职自荐书范文
2014/03/27 职场文书
辩护词格式
2015/05/22 职场文书
2015年酒店年度工作总结
2015/05/23 职场文书
个人自我鉴定怎么写?
2019/07/01 职场文书
导游词之岳阳楼
2019/09/25 职场文书
PyTorch梯度裁剪避免训练loss nan的操作
2021/05/24 Python
Python中的 enumerate和zip详情
2022/05/30 Python