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的ORM框架SQLObject入门实例
Apr 28 Python
用Python实现一个简单的能够上传下载的HTTP服务器
May 05 Python
Python中IPYTHON入门实例
May 11 Python
python3.5仿微软计算器程序
Mar 30 Python
Python按行读取文件的实现方法【小文件和大文件读取】
Sep 19 Python
django js实现部分页面刷新的示例代码
May 28 Python
Djang的model创建的字段和参数详解
Jul 27 Python
python求加权平均值的实例(附纯python写法)
Aug 22 Python
Python的Django框架实现数据库查询(不返回QuerySet的方法)
May 19 Python
Python turtle库的画笔控制说明
Jun 28 Python
python爬虫beautifulsoup库使用操作教程全解(python爬虫基础入门)
Feb 19 Python
Python数据类型最全知识总结
May 31 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启用zlib压缩文件的配置方法
2013/06/12 PHP
PHP获取数组长度或某个值出现次数的方法
2015/02/11 PHP
codeigniter显示所有脚本执行时间的方法
2015/03/21 PHP
PHP中类的继承和用法实例分析
2016/05/24 PHP
PHP中模糊查询并关联三个select框
2017/06/19 PHP
php利用云片网实现短信验证码功能的示例代码
2017/11/18 PHP
基于jquery实现的服务器验证控件的启用和禁用代码
2010/04/27 Javascript
IE6下opacity与JQuery的奇妙结合
2013/03/01 Javascript
js将控件隐藏的方法及display属性介绍
2013/07/04 Javascript
JavaScript中的连字符详解
2013/11/28 Javascript
JavaScript中for循环的使用详解
2015/06/03 Javascript
js实现选中页面文字将其分享到新浪微博
2015/11/05 Javascript
Jquery实现$.fn.extend和$.extend函数
2016/04/14 Javascript
javascript insertAfter()定义与用法示例
2016/07/25 Javascript
angular-ngSanitize模块-$sanitize服务详解
2017/06/13 Javascript
Vue源码学习之初始化模块init.js解析
2017/11/02 Javascript
Vue监听事件实现计数点击依次增加的方法
2018/09/26 Javascript
javascript严格模式详解(含严格模式与非严格模式的区别)
2019/11/12 Javascript
JS前后端实现身份证号验证代码解析
2020/07/23 Javascript
vant 解决tab切换插件标题样式自定义的问题
2020/11/13 Javascript
Python创建xml的方法
2015/03/10 Python
为Python的web框架编写前端模版的教程
2015/04/30 Python
Django 连接sql server数据库的方法
2018/06/30 Python
Python中实例化class的执行顺序示例详解
2018/10/14 Python
Windows下安装Scrapy
2018/10/17 Python
python使用xlrd模块读取xlsx文件中的ip方法
2019/01/11 Python
理想高通滤波实现Python opencv示例
2019/01/30 Python
Django框架静态文件处理、中间件、上传文件操作实例详解
2020/02/29 Python
JetBrains PyCharm(Community版本)的下载、安装和初步使用图文教程详解
2020/03/19 Python
Html5无刷新修改browser Url的方法
2014/01/15 HTML / CSS
英国汽车和货车租赁网站:Hertz英国
2016/09/02 全球购物
YOINS官网:时尚女装网上购物
2017/03/17 全球购物
2014物价局群众路线对照检查材料思想汇报
2014/09/21 职场文书
村主任群众路线教育实践活动个人对照检查材料思想汇报
2014/10/01 职场文书
2014年政风行风自查自纠报告
2014/10/21 职场文书
安全生产工作汇报
2014/10/28 职场文书