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 相关文章推荐
12步教你理解Python装饰器
Feb 25 Python
python 实现上传图片并预览的3种方法(推荐)
Jul 14 Python
Python语言描述最大连续子序列和
Dec 05 Python
python学习基础之循环import及import过程
Apr 22 Python
python3第三方爬虫库BeautifulSoup4安装教程
Jun 19 Python
在numpy矩阵中令小于0的元素改为0的实例
Jan 26 Python
解决python 读取excel时 日期变成数字并加.0的问题
Oct 08 Python
python 实现二维字典的键值合并等函数
Dec 06 Python
Django values()和value_list()的使用
Mar 31 Python
用python计算文件的MD5值
Dec 23 Python
Python道路车道线检测的实现
Jun 27 Python
Python语言中的数据类型-序列
Feb 24 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随机生成随机个数的字母组合示例
2014/01/14 PHP
php中字符串和正则表达式详解
2014/10/23 PHP
php中getservbyport与getservbyname函数用法实例
2014/11/18 PHP
PHP实现文件下载【实例分享】
2017/04/28 PHP
PHP实现求解最长公共子串问题的方法
2017/11/17 PHP
为Extjs加加速(javascript加速)
2010/08/19 Javascript
EasyUI的treegrid组件动态加载数据问题的解决办法
2011/12/11 Javascript
Javascript简单实现可拖动的div
2013/10/22 Javascript
laytpl 精致巧妙的JavaScript模板引擎
2014/08/29 Javascript
基于JavaScript判断浏览器到底是关闭还是刷新(超准确)
2016/02/01 Javascript
AngularJS自动表单验证
2016/02/01 Javascript
js的form表单提交url传参数(包含+等特殊字符)的两种解决方法
2016/05/25 Javascript
JS实现小球的弹性碰撞效果
2017/11/11 Javascript
vue中获取滚动table的可视页面宽度调整表头与列对齐(每列宽度不都相同)
2019/08/17 Javascript
element-ui中按需引入的实现
2019/12/25 Javascript
我所理解的JavaScript中的this指向
2020/09/04 Javascript
[01:07:41]IG vs VGJ.T 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
[02:29]大剑、皮鞭、女装,这届DOTA2勇士令状里都有
2020/07/17 DOTA
Python学习笔记整理3之输入输出、python eval函数
2015/12/14 Python
Python实现二叉搜索树
2016/02/03 Python
你应该知道的python列表去重方法
2017/01/17 Python
unittest+coverage单元测试代码覆盖操作实例详解
2018/04/04 Python
mac安装pytorch及系统的numpy更新方法
2018/07/26 Python
使用Python matplotlib作图时,设置横纵坐标轴数值以百分比(%)显示
2020/05/16 Python
详解Python中list[::-1]的几种用法
2020/11/16 Python
韩国乐天网上商城:Lotte iMall
2021/02/03 全球购物
STP协议的主要用途是什么?为什么要用STP
2012/12/20 面试题
swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?
2013/03/30 面试题
超市营业员求职简历的自我评价
2013/10/17 职场文书
公交公司毕业生求职信
2014/02/15 职场文书
保密协议书范本
2014/04/22 职场文书
啤酒节策划方案
2014/05/28 职场文书
政府个人对照检查材料
2014/08/28 职场文书
2015小学教师年度考核工作总结
2015/05/12 职场文书
雨中的树观后感
2015/06/03 职场文书
一些让Python代码简洁的实用技巧总结
2021/08/23 Python