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使用django获取用户IP地址的方法
May 11 Python
Python的Django框架可适配的各种数据库介绍
Jul 15 Python
python并发编程之多进程、多线程、异步和协程详解
Oct 28 Python
Python编程实现输入某年某月某日计算出这一天是该年第几天的方法
Apr 18 Python
详谈python read readline readlines的区别
Sep 22 Python
Python递归实现汉诺塔算法示例
Mar 19 Python
Python lxml解析HTML并用xpath获取元素的方法
Jan 02 Python
Python基于matplotlib画箱体图检验异常值操作示例【附xls数据文件下载】
Jan 07 Python
PyQt5图形界面播放音乐的实例
Jun 17 Python
django2笔记之路由path语法的实现
Jul 17 Python
python验证码图片处理(二值化)
Nov 01 Python
Pytorch中膨胀卷积的用法详解
Jan 07 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中正确的使用json
2013/08/06 PHP
php导出CSV抽象类实例
2014/09/24 PHP
typecho插件编写教程(四):插件挂载
2015/05/28 PHP
浅谈PHP链表数据结构(单链表)
2016/06/08 PHP
BOOM vs RR BO3 第一场2.13
2021/03/10 DOTA
收藏Javascript中常用的55个经典技巧
2007/08/12 Javascript
JavaScript 构造函数 面相对象学习必备知识
2010/06/09 Javascript
JavaScript的继承的封装介绍
2013/10/15 Javascript
js/jquery去掉空格,回车,换行示例代码
2013/11/05 Javascript
使用jQuery.wechat构建微信WEB应用
2014/10/09 Javascript
transport.js和jquery冲突问题的解决方法
2015/02/10 Javascript
javascript Array 数组常用方法
2015/04/05 Javascript
浅谈js中子页面父页面方法 变量相互调用
2016/08/04 Javascript
实现图片首尾平滑轮播(JS原生方法—节流)
2017/10/17 Javascript
Django与Vue语法的冲突问题完美解决方法
2017/12/14 Javascript
vue项目中使用ueditor的实例讲解
2018/03/05 Javascript
11个教程中不常被提及的JavaScript小技巧(推荐)
2019/04/17 Javascript
基于jquery实现的tab选项卡功能示例【附源码下载】
2019/06/10 jQuery
JS实现点星星消除小游戏
2020/03/24 Javascript
JavaScript实现弹出窗口效果
2020/12/09 Javascript
[01:52]2020年DOTA2 TI10夏季活动预告片
2020/07/15 DOTA
Python urllib、urllib2、httplib抓取网页代码实例
2015/05/09 Python
python3.4爬虫demo
2019/01/22 Python
python使用selenium登录QQ邮箱(附带滑动解锁)
2019/01/23 Python
python3实现表白神器
2019/04/09 Python
python pickle存储、读取大数据量列表、字典数据的方法
2019/07/07 Python
浅析使用Python搭建http服务器
2019/10/27 Python
图解Python中深浅copy(通俗易懂)
2020/09/03 Python
I.T中国官网:精选时尚设计师单品网购平台
2018/03/26 全球购物
优秀教师先进事迹
2014/01/22 职场文书
销售会计岗位职责
2014/03/15 职场文书
试用期自我鉴定范文
2014/03/20 职场文书
初中升旗仪式演讲稿
2014/05/08 职场文书
一份没有按时交货失信于客户的检讨书
2014/09/19 职场文书
个人房屋买卖协议书(范本)
2014/10/04 职场文书
PHP面试题 wakeup魔法 Ezpop pop序列化与反序列化
2022/04/11 PHP