Python中递归的应用

1.什么是递归?

   在一个函数体中调用这个函数本身的过程就叫做递归。

   例如我们要得到1*2*3*4*5*6的值或者是1+2+3+4+5+6这样数之间有一定规律的运算,我们就可以考虑使用递归。

    拿1*2*3*4*5....举例说明:

                          

斐波那契数列的递归实现:

   1)使用数学表达式可以表示为:

        F(n) = 1 (当n=1,或者n=2时)

        F(n) = F(n-1)+F(n-2) (当n>2时)

   2)使用递归的方式来解数列:

   

汉诺塔游戏的递归实现:

     它的游戏规则是:有三根相邻的柱子,标号为X,Y,Z,X柱子上从下到上按金字塔状叠放着n个不同大小的圆盘,现在把所有盘子一个一个移动到柱子Z上,并且每次移动同一根柱子上都不能出现大盘子在小盘子上方。

  进过分析,可以把盘子的个数看个n,把最下面一个大的盘子当作1,剩下的盘子当作一个整体也就是n-1。

  这样无论多少个盘子,我们都能将它分成两组,于是这样的一次一次的调用本身,就可以把它当作一个递归函数来看待。

  比如:有3个盘子,盘子大小为(A>B>C),X,Y,Z为三根木棍

    它的推论过程:1.先把(B,C)看作一个整体,将它们移动到Y上。

                             2.再将剩下的A移动到Z上去。

    它的游戏过程就是:1.  C------>Z

                                     2.  B------>Y

                                     3.  C------>Y

                                     4.  A------>Z

                                     5.  C------>X

                                     6.  B------>Z

                                     7.  C------>Z

即完成了该游戏,以后不管圆盘增加到多少个,都可以将它们一次一次的分成两组,然后再进行移动。

所以分析出了游戏的本质,就可以把这个游戏当作一个递归来实现,它刚好符合递归的定义。

用代码表示就是:

输出的结果:

2.Python中字典的使用

   字典顾名思义就是一种一一对应的关系,它可以储存任意的类型值。字典的每个键值 key=>value 对用冒号 : 分割,每个键值对之间用逗号 , 分割,整个字典包括在花括号 {} 中。(每一个key是唯一存在的,如果出现相同的key,则会进行覆盖)

   如下创建字典:

             

   向字典中添加新的键值对:

              

  访问字典的几种常用方法:

  1.keys():常与for循环连用打印出所有的key

                                   

  2.values():与for连用打印出所有的value

                     

  3.items():与for连用打印出所有的键值对

                     

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值