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之关于类的初步认识
Oct 11 Python
对变量赋值的理解--Pyton中让两个值互换的实现方法
Nov 29 Python
python中(str,list,tuple)基础知识汇总
Feb 20 Python
Python实现随机生成手机号及正则验证手机号的方法
Apr 25 Python
对Python 获取类的成员变量及临时变量的方法详解
Jan 22 Python
详解Python3注释知识点
Feb 19 Python
详解Python 函数如何重载?
Apr 23 Python
Django框架首页和登录页分离操作示例
May 28 Python
使用Python制作一个打字训练小工具
Oct 01 Python
pygame实现俄罗斯方块游戏(基础篇2)
Oct 29 Python
python处理RSTP视频流过程解析
Jan 11 Python
Python文件的操作示例的详细讲解
Apr 08 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
基于mysql的论坛(1)
2006/10/09 PHP
Smarty+QUICKFORM小小演示
2007/02/25 PHP
php 生成唯一id的几种解决方法
2013/03/08 PHP
ThinkPHP模板比较标签用法详解
2014/06/30 PHP
php简单定时执行任务的实现方法
2015/02/23 PHP
php metaphone()函数及php localeconv() 函数实例解析
2016/05/15 PHP
鼠标图片振动代码
2006/07/06 Javascript
javascript读取RSS数据
2007/01/20 Javascript
jQuery EasyUI API 中文文档 可调整尺寸
2011/09/29 Javascript
网页打开自动最大化的js代码
2012/08/22 Javascript
前台js改变Session的值(用ajax实现)
2012/12/28 Javascript
EasyUI中实现form表单提交的示例分享
2015/03/01 Javascript
js实现文本框只允许输入数字并限制数字大小的方法
2015/08/19 Javascript
jquery中cookie用法实例详解(获取,存储,删除等)
2016/01/04 Javascript
Jquery组件easyUi实现选项卡切换示例
2016/08/23 Javascript
jQuery插件扩展实例【添加回调函数】
2016/11/26 Javascript
vue 循环加载数据并获取第一条记录的方法
2018/09/26 Javascript
Vuex的实战使用详解
2019/10/31 Javascript
jquery传参及获取方式(两种方式)
2020/02/13 jQuery
[02:13] 完美世界DOTA2联赛PWL DAY5集锦
2020/11/03 DOTA
Python中max函数用法实例分析
2015/07/17 Python
详解Python的Django框架中inclusion_tag的使用
2015/07/21 Python
Python语言描述连续子数组的最大和
2018/01/04 Python
在python中只选取列表中某一纵列的方法
2018/11/28 Python
python实现的config文件读写功能示例
2019/09/24 Python
Python 中如何实现参数化测试的方法示例
2019/12/10 Python
Python中SQLite如何使用
2020/05/27 Python
Python 求向量的余弦值操作
2021/03/04 Python
html5小程序飞入购物车(抛物线绘制运动轨迹点)
2020/10/19 HTML / CSS
Chi Chi London官网:购买连衣裙和礼服
2020/10/25 全球购物
《蓝色的树叶》教学反思
2014/02/24 职场文书
第二批党的群众路线教育实践活动总结报告
2014/10/30 职场文书
大学生见习报告范文
2014/11/03 职场文书
市场部岗位职责
2015/02/12 职场文书
防震减灾主题班会
2015/08/14 职场文书
Java无向树分析 实现最小高度树
2022/04/09 Javascript