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实现类的静态变量用法实例
May 08 Python
Python实现并行抓取整站40万条房价数据(可更换抓取城市)
Dec 14 Python
python学习入门细节知识点
Mar 29 Python
Python迭代器定义与简单用法分析
Apr 30 Python
Django处理文件上传File Uploads的实例
May 28 Python
Python2.7环境Flask框架安装简明教程【已测试】
Jul 13 Python
Python实现多态、协议和鸭子类型的代码详解
May 05 Python
python中pytest收集用例规则与运行指定用例详解
Jun 27 Python
python 多进程共享全局变量之Manager()详解
Aug 15 Python
Pytorch 实现sobel算子的卷积操作详解
Jan 10 Python
Python基于requests实现模拟上传文件
Apr 21 Python
Python自动化实战之接口请求的实现
May 30 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
咖啡豆的最常见发酵处理方法,详细了解一下
2021/03/03 冲泡冲煮
一个ORACLE分页程序,挺实用的.
2006/10/09 PHP
示例详解Laravel的注册重构
2016/08/14 PHP
php文件类型MIME对照表(比较全)
2016/10/07 PHP
thinkPHP框架RBAC实现原理分析
2019/02/01 PHP
PHP封装的简单连接MongoDB类示例
2019/02/13 PHP
php7性能提升的原因详解
2019/10/13 PHP
jQuery 淡出一个图像到另一个图像的实现代码
2013/06/12 Javascript
js select option对象小结
2013/12/20 Javascript
underscore之Chaining_动力节点Java学院整理
2017/07/10 Javascript
vue组件实践之可搜索下拉框功能
2018/11/25 Javascript
node.js实现为PDF添加水印的示例代码
2018/12/05 Javascript
如何让Nodejs支持H5 History模式(connect-history-api-fallback源码分析)
2019/05/30 NodeJs
详解python里使用正则表达式的全匹配功能
2017/10/19 Python
python实现最长公共子序列
2018/05/22 Python
Pycharm 操作Django Model的简单运用方法
2018/05/23 Python
Python爬虫包BeautifulSoup实例(三)
2018/06/17 Python
python实现图片批量压缩程序
2018/07/23 Python
基于Python3.6+splinter实现自动抢火车票
2018/09/25 Python
Python3.4学习笔记之列表、数组操作示例
2019/03/01 Python
Pythony运维入门之Socket网络编程详解
2019/04/15 Python
python画蝴蝶曲线图的实例
2019/11/21 Python
Python中如何将一个类方法变为多个方法
2019/12/30 Python
Python接口测试环境搭建过程详解
2020/06/29 Python
关于pycharm 切换 python3.9 报错 ‘HTMLParser‘ object has no attribute ‘unescape‘ 的问题
2020/11/24 Python
普天C++笔试题
2016/03/20 面试题
params有什么用
2016/03/01 面试题
暑期社会实践方案
2014/02/05 职场文书
法律系毕业生自荐信范文
2014/03/27 职场文书
慰问敬老院活动总结
2014/04/26 职场文书
新文化运动的基本口号
2014/06/21 职场文书
大学生感恩父母演讲稿
2014/08/28 职场文书
中秋节国旗下演讲稿
2014/09/05 职场文书
2015年计生工作总结范文
2015/04/24 职场文书
漂亮妈妈观后感
2015/06/08 职场文书
2016应届毕业生自荐信范文
2016/01/28 职场文书