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中还原JavaScript的escape函数编码后字符串的方法
Aug 22 Python
Python变量作用范围实例分析
Jul 07 Python
Python简单实现安全开关文件的两种方式
Sep 19 Python
Python3生成手写体数字方法
Jan 30 Python
python实现内存监控系统
Mar 07 Python
python查看模块,对象的函数方法
Oct 16 Python
python3实现带多张图片、附件的邮件发送
Aug 10 Python
python+selenium select下拉选择框定位处理方法
Aug 24 Python
PyCharm使用之配置SSH Interpreter的方法步骤
Dec 26 Python
使用python 计算百分位数实现数据分箱代码
Mar 03 Python
python数据类型可变不可变知识点总结
Mar 06 Python
利用Python实现Json序列化库的方法步骤
Sep 09 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
DOTA2 玩家自创拉野攻略 特色英雄快速成长篇
2020/04/20 DOTA
关于PHP中字符串与多进制转换函数的实例代码
2016/11/03 PHP
PHP基于自增数据如何生成不重复的随机数示例
2017/05/19 PHP
Aster vs Newbee BO5 第一场2.19
2021/03/10 DOTA
Prototype RegExp对象 学习
2009/07/19 Javascript
11款基于Javascript的文件管理器
2009/10/25 Javascript
了解一点js的Eval函数
2012/07/26 Javascript
css3元素简单的闪烁效果实现(html5 jquery)
2013/12/28 Javascript
Jquery+asp.net后台数据传到前台js进行解析的方法
2014/05/11 Javascript
解决js下referer兼容各大浏览器的方法
2014/11/03 Javascript
jQuery插件formValidator实现表单验证
2016/05/23 Javascript
基于原生JS实现图片裁剪
2016/08/01 Javascript
IE8利用自带的setCapture和releaseCapture解决iframe的拖拽事件方法
2016/10/25 Javascript
Bootstrap超大屏幕的实现代码
2017/03/22 Javascript
js利用for in循环获取 一个对象的所有属性以及值的实例
2017/03/30 Javascript
Vue渲染函数详解
2017/09/15 Javascript
浅谈webpack+react多页面开发终极架构
2018/11/11 Javascript
说说如何利用 Node.js 代理解决跨域问题
2019/04/22 Javascript
Vue-cli3.x + axios 跨域方案踩坑指北
2019/07/04 Javascript
vue子传父关于.sync与$emit的实现
2019/11/05 Javascript
[01:02]DOTA2辉夜杯决赛日 CDEC.Y对阵VG赛前花絮
2015/12/27 DOTA
Python 2与Python 3版本和编码的对比
2017/02/14 Python
python numpy元素的区间查找方法
2018/11/14 Python
python 使用re.search()筛选后 选取部分结果的方法
2018/11/28 Python
Python程序包的构建和发布过程示例详解
2019/06/09 Python
Pytorch中的variable, tensor与numpy相互转化的方法
2019/10/10 Python
在django-xadmin中APScheduler的启动初始化实例
2019/11/15 Python
HTML5 canvas基本绘图之绘制矩形
2016/06/27 HTML / CSS
校园报刊亭的创业计划书
2014/01/02 职场文书
教师产假请假条
2014/04/10 职场文书
摄影展策划方案
2014/06/02 职场文书
英语系本科生求职信
2014/07/15 职场文书
群众路线剖析材料范文
2014/10/09 职场文书
郭明义电影观后感
2015/06/08 职场文书
2016年综治宣传月活动宣传标语口号
2016/03/16 职场文书
PostgreSQL常用字符串分割函数整理汇总
2022/07/07 PostgreSQL