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解析excel文件存入sqlite数据库的方法
Nov 15 Python
由浅入深讲解python中的yield与generator
Apr 05 Python
Django基础之Model操作步骤(介绍)
May 27 Python
python实现视频分帧效果
May 31 Python
python字符串中匹配数字的正则表达式
Jul 03 Python
基于python实现学生信息管理系统
Nov 22 Python
python装饰器原理与用法深入详解
Dec 19 Python
pytorch进行上采样的种类实例
Feb 18 Python
利用Python如何制作贪吃蛇及AI版贪吃蛇详解
Aug 24 Python
Django模型验证器介绍与源码分析
Sep 08 Python
通过代码实例了解Python3编程技巧
Oct 13 Python
只用50行Python代码爬取网络美女高清图片
Jun 02 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
这部好评如潮的动漫 知名梗频出 但是画风劝退很多人
2020/03/08 日漫
新版PHP极大的增强功能和性能
2006/10/09 PHP
精通php的十大要点(上)
2009/02/04 PHP
基于PHP+jQuery+MySql实现红蓝(顶踩)投票代码
2015/08/25 PHP
详解php设置session(过期、失效、有效期)
2015/11/12 PHP
详细讲解JS节点知识
2010/01/31 Javascript
jquery validate.js表单验证的基本用法入门
2010/05/13 Javascript
UserData用法总结 lanyu出品
2010/07/01 Javascript
js判断undefined变量类型使用typeof
2013/06/03 Javascript
js循环改变div颜色具体方法
2013/06/25 Javascript
node.js中的console.log方法使用说明
2014/12/09 Javascript
Express实现前端后端通信上传图片之存储数据库(mysql)傻瓜式教程(一)
2015/12/10 Javascript
JavaScript门面模式详解
2017/10/19 Javascript
剖析Angular Component的源码示例
2018/03/23 Javascript
jQuery添加新内容的四个常用方法分析【append,prepend,after,before】
2019/03/19 jQuery
Vue中多元素过渡特效的解决方案
2020/02/05 Javascript
vue监听键盘事件的相关总结
2021/01/29 Vue.js
js实现简单商品筛选功能
2021/02/02 Javascript
[02:11]DOTA2上海特级锦标赛主赛事第二日RECAP
2016/03/04 DOTA
Python的string模块中的Template类字符串模板用法
2016/06/27 Python
python 中的int()函数怎么用
2017/10/17 Python
PyCharm在win10的64位系统安装实例
2017/11/26 Python
pandas中Timestamp类用法详解
2017/12/11 Python
使用Eclipse如何开发python脚本
2018/04/11 Python
python list转矩阵的实例讲解
2018/08/04 Python
python使用mitmproxy抓取浏览器请求的方法
2019/07/02 Python
python3实现mysql导出excel的方法
2019/07/31 Python
Python3显示当前时间、计算时间差及时间加减法示例代码
2019/09/07 Python
Django {{ MEDIA_URL }}无法显示图片的解决方式
2020/04/07 Python
如何通过Python3和ssl实现加密通信功能
2020/05/09 Python
python 数据库查询返回list或tuple实例
2020/05/15 Python
Python类成员继承重写的实现
2020/09/16 Python
Django框架请求生命周期实现原理
2020/11/13 Python
《黄山奇石》教学反思
2014/04/19 职场文书
2015年中学总务处工作总结
2015/07/22 职场文书
「租借女友」第2季樱泽墨角色PV&新视觉图公开
2022/03/21 日漫