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爬虫教程之爬取百度贴吧并下载的示例
Mar 07 Python
Python实现的多线程端口扫描工具分享
Jan 21 Python
将TensorFlow的模型网络导出为单个文件的方法
Apr 23 Python
详解Pytorch 使用Pytorch拟合多项式(多项式回归)
May 24 Python
TensorFlow实现简单卷积神经网络
May 24 Python
NumPy 数组使用大全
Apr 25 Python
为什么你还不懂得怎么使用Python协程
May 13 Python
Django在admin后台集成TinyMCE富文本编辑器的例子
Aug 09 Python
树莓派3 搭建 django 服务器的实例
Aug 29 Python
Python 函数绘图及函数图像微分与积分
Nov 20 Python
使用OpenCV去除面积较小的连通域
Jul 05 Python
Pyhton爬虫知识之正则表达式详解
Apr 01 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递归调用数组值并用其执行指定函数的方法
2015/04/01 PHP
一个实用的php验证码类
2017/07/06 PHP
Laravel框架模板加载,分配变量及简单路由功能示例
2018/06/11 PHP
imagettftext() 失效,不起作用
2021/03/09 PHP
javascript new 需不需要继续使用
2009/07/02 Javascript
javascript下高性能字符串连接StringBuffer类
2010/08/16 Javascript
JavaScript 匿名函数(anonymous function)与闭包(closure)
2011/10/04 Javascript
拉动滚动条加载数据的jquery代码
2012/05/03 Javascript
javascript full screen 全屏显示页面元素的方法
2013/09/27 Javascript
动态读取JSON解析键值对的方法
2014/06/03 Javascript
JavaScript阻止事件冒泡示例分享
2014/12/28 Javascript
详解JavaScript对Date对象的操作问题(生成一个倒数7天的数组)
2015/10/01 Javascript
使用JS实现气泡跟随鼠标移动的动画效果
2017/09/16 Javascript
微信小程序实战篇之购物车的实现代码示例
2017/11/30 Javascript
vue 表单之通过v-model绑定单选按钮radio
2019/05/13 Javascript
vue解决使用$http获取数据时报错的问题
2019/10/30 Javascript
vue中对象数组去重的实现
2020/02/06 Javascript
小程序使用分包的示例代码
2020/03/23 Javascript
微信小程序实现上拉加载功能示例【加载更多数据/触底加载/点击加载更多数据】
2020/05/29 Javascript
对于Python的Django框架部署的一些建议
2015/04/09 Python
详解Python中的文本处理
2015/04/11 Python
在Django中编写模版节点及注册标签的方法
2015/07/20 Python
Python进阶篇之字典操作总结
2016/11/16 Python
python批量查询、汉字去重处理CSV文件
2018/05/31 Python
python爬取个性签名的方法
2018/06/17 Python
django 自定义过滤器的实现
2019/02/26 Python
pyqt5中QThread在使用时出现重复emit的实例
2019/06/21 Python
详解python itertools功能
2020/02/07 Python
基于python图书馆管理系统设计实例详解
2020/08/05 Python
Python3如何使用range函数替代xrange函数
2020/10/05 Python
css3.0 图形构成实例练习二
2013/03/19 HTML / CSS
CSS3 仿微信聊天小气泡实例代码
2017/04/05 HTML / CSS
碧欧泉美国官网:Biotherm美国
2016/08/31 全球购物
欧缇丽美国官网:Caudalie美国
2016/12/31 全球购物
介绍信的格式
2015/01/30 职场文书
Python Pandas pandas.read_sql函数实例用法
2021/06/21 Python