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中使用mongoengine操作MongoDB教程
Apr 24 Python
以视频爬取实例讲解Python爬虫神器Beautiful Soup用法
Jan 20 Python
python导出chrome书签到markdown文件的实例代码
Dec 27 Python
Python使用Scrapy爬虫框架全站爬取图片并保存本地的实现代码
Mar 04 Python
python如何爬取个性签名
Jun 19 Python
解决pycharm 误删掉项目文件的处理方法
Oct 22 Python
Python中的枚举类型示例介绍
Jan 09 Python
由面试题加深对Django的认识理解
Jul 19 Python
openCV提取图像中的矩形区域
Jul 21 Python
python实现逻辑回归的示例
Oct 09 Python
celery在python爬虫中定时操作实例讲解
Nov 27 Python
Django-silk性能测试工具安装及使用解析
Nov 28 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&amp;&amp;mysql)五
2006/10/09 PHP
PHP 配置文件中open_basedir选项作用
2009/07/19 PHP
PHP之COOKIE支持详解
2010/09/20 PHP
PHP字符编码问题之GB2312 VS UTF-8解决方法
2011/06/23 PHP
php中设置index.php文件为只读的方法
2013/02/06 PHP
解析php做推送服务端实现ios消息推送
2013/07/01 PHP
PHP COOKIE及时生效的方法介绍
2014/02/14 PHP
PHP实现在线阅读PDF文件的方法
2015/06/23 PHP
PHP+Mysql+jQuery实现发布微博程序 php篇
2015/10/15 PHP
只需20行代码就可以写出CSS覆盖率测试脚本
2013/04/24 Javascript
JS Date函数整理方便使用
2013/10/23 Javascript
原生JS和JQuery动态添加、删除表格行的方法
2015/05/28 Javascript
如何利用JS通过身份证号获取当事人的生日、年龄、性别
2016/01/22 Javascript
Vue中父组件向子组件通信的方法
2017/07/11 Javascript
使用mock.js随机数据和使用express输出json接口的实现方法
2018/01/07 Javascript
JavaScript控制浏览器全屏显示简单示例
2018/07/05 Javascript
使用layui的layer组件做弹出层的例子
2019/09/27 Javascript
JS实现网页时钟特效
2020/03/25 Javascript
js实现表格单列按字母排序
2020/08/12 Javascript
Python中matplotlib中文乱码解决办法
2017/05/12 Python
在java中如何定义一个抽象属性示例详解
2017/08/18 Python
Python中函数参数匹配模型详解
2019/06/09 Python
Python通用唯一标识符uuid模块使用案例
2020/09/10 Python
css3 仿写阿里云水纹效果的示例代码
2018/02/10 HTML / CSS
采用专利算法搜索最廉价的机票:CheapAir
2016/09/10 全球购物
大学生个人求职信范文
2013/09/21 职场文书
大学生求职自荐信
2013/12/12 职场文书
汽车技术服务英文求职信范文
2014/01/02 职场文书
初一英语教学反思
2014/01/11 职场文书
参观考察邀请函范文
2014/01/29 职场文书
机关作风建设自查报告及整改措施
2014/10/21 职场文书
2016年大学生暑期社会实践活动总结
2016/04/06 职场文书
大学生饮品店创业计划书范文
2019/07/10 职场文书
HTML页面滚动时部分内容位置固定不滚动的实现
2021/04/14 HTML / CSS
Vue中使用import进行路由懒加载的原理分析
2022/04/01 Vue.js
html中两种获取标签内的值的方法
2022/06/16 jQuery