Python解决N阶台阶走法问题的方法


本文摘自php中文网,作者不言,侵删。

这篇文章主要介绍了Python解决N阶台阶走法问题的方法,简单描述了走台阶问题,并结合实例形式分析了Python使用递归与递推算法解决走台阶问题的相关操作技巧,需要的朋友可以参考下

本文实例讲述了Python解决N阶台阶走法问题的方法。分享给大家供大家参考,具体如下:

题目:一栋楼有N阶楼梯,兔子每次可以跳1、2或3阶,问一共有多少种走法?

Afanty的分析:

遇到这种求规律的问题,自己动动手推推就好,1阶有几种走法?2阶有几种走法?3阶有几种走法?4阶有几种走法?5阶有几种走法?

对吧,规律出来了!

易错点:这不是组合问题,因为第1次走1阶、第2次走2阶不同于 第1次走2阶、第2次走1阶

下面是Python的递归实现代码:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

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


当然也可以用非递归的方法来实现,下面就是基于递推法的代码:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

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中subprocess批量执行linux命令



以上就是Python解决N阶台阶走法问题的方法的详细内容,更多文章请关注木庄网络博客!!

相关阅读 >>

Python怎么打印变量

Python中集合中的元素是否可以重复

Python格式化输出是什么意思

Python语言基础都有哪些

关于Python中的中文编码问题

Python中5种连接字符串的方法

Python与xml的结合实践教程

Python线程下事件用法的简单介绍

Python可以引用另一个文件的函数吗

使用pandas进行数据处理之 dataframe篇

更多相关阅读请进入《Python》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...