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 相关文章推荐
Linux环境下MySQL-python安装过程分享
Feb 02 Python
Python简单的制作图片验证码实例
May 31 Python
TF-IDF算法解析与Python实现方法详解
Nov 16 Python
对Python 窗体(tkinter)文本编辑器(Text)详解
Oct 11 Python
Python基于plotly模块实现的画图操作示例
Jan 23 Python
Python常用的json标准库
Feb 19 Python
Python面向对象之继承和多态用法分析
Jun 08 Python
学习和使用python的13个理由
Jul 30 Python
利用Python绘制有趣的万圣节南瓜怪效果
Oct 31 Python
使用 Python 清理收藏夹里已失效的网站
Dec 03 Python
Python 实现opencv所使用的图片格式与 base64 转换
Jan 09 Python
Python 实现图片转字符画的示例(静态图片,gif皆可)
Nov 05 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
德生PL550的电路分析
2021/03/02 无线电
PHP 超链接 抓取实现代码
2009/06/29 PHP
提高php运行速度的一些小技巧分享
2012/07/03 PHP
php使用Session和文件统计在线人数
2015/07/04 PHP
在Mac OS上自行编译安装Apache服务器和PHP解释器
2015/12/24 PHP
利用Homestead快速运行一个Laravel项目的方法详解
2017/11/14 PHP
PHP让数组中有相同值的组成新的数组实例
2017/12/31 PHP
PHP中SESSION过期设置
2021/03/09 PHP
默认让页面的第一个控件选中的javascript代码
2009/12/26 Javascript
jQuery ajax cache缓存问题
2010/07/01 Javascript
推荐10个2014年最佳的jQuery视频插件
2014/11/12 Javascript
深入理解js中this的用法
2016/05/28 Javascript
聊一聊JS中的prototype
2016/09/29 Javascript
详解Angular.js指令中scope类型的几种特殊情况
2017/02/21 Javascript
Vue中v-for的数据分组实例
2018/03/07 Javascript
快速解决vue动态绑定多个class的官方实例语法无效的问题
2018/09/05 Javascript
react-navigation之动态修改title的内容
2018/09/26 Javascript
详解在React-Native中持久化redux数据
2019/05/22 Javascript
深入理解 JS 垃圾回收
2019/06/03 Javascript
JavaScript中的函数申明、函数表达式、箭头函数
2019/12/06 Javascript
JS实现图片幻灯片效果代码实例
2020/05/21 Javascript
Vue项目如何引入bootstrap、elementUI、echarts
2020/11/26 Vue.js
[01:20:37]FNATIC vs NIP 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/19 DOTA
利用python将图片转换成excel文档格式
2017/12/30 Python
Python3.5 Pandas模块之Series用法实例分析
2019/04/23 Python
如何将Pycharm中调整字体大小的方式设置为&quot;ctrl+鼠标滚轮上下滑&quot;
2020/11/17 Python
python 使用tkinter+you-get实现视频下载器
2020/11/17 Python
Bootstrap 学习分享
2012/11/12 HTML / CSS
Sasa莎莎海外旗舰店:香港莎莎美妆平台
2018/03/21 全球购物
学校安全检查制度
2014/01/27 职场文书
项目申报专员岗位职责
2014/07/09 职场文书
县政府领导班子四风问题对照检查材料思想汇报
2014/09/26 职场文书
干部考核工作总结
2015/08/12 职场文书
2016年寒假政治学习心得体会
2015/10/09 职场文书
如何用JavaScript学习算法复杂度
2021/04/30 Javascript
MySQL 常见的数据表设计误区汇总
2021/06/07 MySQL