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 相关文章推荐
Centos5.x下升级python到python2.7版本教程
Feb 14 Python
Python中AND、OR的一个使用小技巧
Feb 18 Python
Python中Threading用法详解
Dec 27 Python
TensorFlow神经网络优化策略学习
Mar 09 Python
Django使用Mysql数据库已经存在的数据表方法
May 27 Python
python实现验证码识别功能
Jun 07 Python
解决python测试opencv时imread导致的错误问题
Jan 26 Python
使用Python轻松完成垃圾分类(基于图像识别)
Jul 09 Python
Python 中由 yield 实现异步操作
May 04 Python
Python 没有main函数的原因
Jul 10 Python
Python 实现图片转字符画的示例(静态图片,gif皆可)
Nov 05 Python
变长双向rnn的正确使用姿势教学
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缓存设计实现代码
2011/09/30 PHP
php实现socket推送技术的示例
2017/12/20 PHP
FCK调用方法..
2006/12/21 Javascript
JAVASCRIPT keycode总结
2009/02/04 Javascript
用示例说明filter()与find()的用法以及children()与find()的区别分析
2013/04/26 Javascript
JS 获取浏览器和屏幕宽高等信息的实现思路及代码
2013/07/31 Javascript
web前端设计师们常用的jQuery特效插件汇总
2014/12/07 Javascript
深入理解JavaScript系列(26):设计模式之构造函数模式详解
2015/03/03 Javascript
jQuery实用技巧必备(上)
2015/11/02 Javascript
Highcharts使用简例及异步动态读取数据
2015/12/30 Javascript
学习javascript面向对象 理解javascript原型和原型链
2016/01/04 Javascript
nodeJS实现简单网页爬虫功能的实例(分享)
2017/06/08 NodeJs
JS实现搜索关键词的智能提示功能
2017/07/07 Javascript
Node.js微信 access_token ( jsapi_ticket ) 存取与刷新的示例
2017/09/30 Javascript
JavaScript实现重力下落与弹性效果的方法分析
2017/12/20 Javascript
jQuery实现简单评论功能
2020/08/19 jQuery
关于vue的列表图片选中打钩操作
2020/09/09 Javascript
[02:52]2017DOTA2国际邀请赛中国区预选赛晋级之路
2017/07/03 DOTA
零基础写python爬虫之urllib2使用指南
2014/11/05 Python
python统计一个文本中重复行数的方法
2014/11/19 Python
Python的批量远程管理和部署工具Fabric用法实例
2015/01/23 Python
python查找重复图片并删除(图片去重)
2019/07/16 Python
python匿名函数用法实例分析
2019/08/03 Python
Django获取该数据的上一条和下一条方法
2019/08/12 Python
无需JS和jQuery代码实现CSS3鼠标浮动放大图片
2016/11/21 HTML / CSS
viagogo法国票务平台:演唱会、体育比赛、戏剧门票
2017/03/27 全球购物
英国快时尚女装购物网站:PrettyLittleThing
2018/08/15 全球购物
Harrods美国:英国最大的百货公司
2018/11/04 全球购物
德国亚马逊官方网站:Amazon.de
2020/11/15 全球购物
一组SQL面试题
2016/02/15 面试题
Java中采用什么结构来捕获、处理异常?各子句的顺序、功能如何
2013/10/07 面试题
大学校务公开实施方案
2014/03/31 职场文书
党员查摆问题及整改措施
2014/10/10 职场文书
学雷锋献爱心倡议书
2015/04/27 职场文书
2016年习主席讲话学习心得体会
2016/01/20 职场文书
详解Redis主从复制实践
2021/05/19 Redis