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 数据结构之堆栈实例代码
Jan 22 Python
详解Golang 与python中的字符串反转
Jul 21 Python
Python 实现两个列表里元素对应相乘的方法
Nov 14 Python
python 实现一次性在文件中写入多行的方法
Jan 28 Python
Python 中包/模块的 `import` 操作代码
Apr 22 Python
python队列Queue的详解
May 10 Python
详解Django 时间与时区设置问题
Jul 23 Python
使用python将最新的测试报告以附件的形式发到指定邮箱
Sep 20 Python
Linux下升级安装python3.8并配置pip及yum的教程
Jan 02 Python
python中with用法讲解
Feb 07 Python
Scrapy项目实战之爬取某社区用户详情
Sep 17 Python
Python爬虫之Selenium多窗口切换的实现
Dec 04 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实现ping
2006/10/09 PHP
PHP父类调用子类方法的代码例子
2014/04/09 PHP
php实现的漂亮分页方法
2014/04/17 PHP
php获取apk包信息的方法
2014/08/15 PHP
PHP中通过trigger_error触发PHP错误示例
2015/06/23 PHP
在Laravel 的 Blade 模版中实现定义变量
2019/10/14 PHP
jQuery formValidator表单验证插件开源了 含API帮助、源码、示例
2008/08/14 Javascript
JS 面向对象的5钟写法
2009/07/31 Javascript
asp(javascript)全角半角转换代码 dbc2sbc
2009/08/06 Javascript
Javascript匿名函数的一种应用 代码封装
2010/06/27 Javascript
JavaScript代码简单实现求杨辉三角给定行的最大值
2013/10/29 Javascript
禁止页面刷新让F5快捷键及右键都无效
2014/01/22 Javascript
JavaScript实现添加及删除事件的方法小结
2015/08/04 Javascript
JS实现六边形3D拖拽翻转效果的方法
2016/09/11 Javascript
jQuery向父辈遍历的简单方法
2016/09/18 Javascript
javascript实现图片左右滚动效果【可自动滚动,有左右按钮】
2016/09/19 Javascript
js实现颜色阶梯渐变效果(Gradient算法)
2017/03/21 Javascript
详解NODEJS的http实现
2018/01/04 NodeJs
微信小程序中如何使用flyio封装网络请求
2019/07/03 Javascript
layui前端时间戳转化实例
2019/11/15 Javascript
Swiper实现导航栏滚动效果
2020/10/16 Javascript
nodejs+koa2 实现模仿springMVC框架
2020/10/21 NodeJs
[01:14]DOTA2亚洲邀请赛 ShowOpen
2015/02/07 DOTA
Python基于回溯法子集树模板解决0-1背包问题实例
2017/09/02 Python
python3读取excel文件只提取某些行某些列的值方法
2018/07/10 Python
从请求到响应过程中django都做了哪些处理
2018/08/01 Python
python操作kafka实践的示例代码
2019/06/19 Python
Pandas 解决dataframe的一列进行向下顺移问题
2019/12/27 Python
Python实现UDP程序通信过程图解
2020/05/15 Python
美国最好的保健品打折网店:Swanson
2017/08/04 全球购物
英国品牌男装折扣网站:Brown Bag
2018/03/08 全球购物
情况说明书格式范文
2014/05/06 职场文书
领导班子个人对照检查材料(群众路线)
2014/09/26 职场文书
党支部创先争优公开承诺书
2015/04/30 职场文书
开学季:喜迎新生,迎新标语少不了
2019/11/07 职场文书
欧元符号 €
2022/02/17 杂记