1.什么是递归?

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

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

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

                          

PYTHON递进 python递归 1+2+3+4+5+6+7+8+9_递归实现

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

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

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

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

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

   

PYTHON递进 python递归 1+2+3+4+5+6+7+8+9_递归实现_02

汉诺塔游戏的递归实现:

     它的游戏规则是:有三根相邻的柱子,标号为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

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

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

用代码表示就是:

PYTHON递进 python递归 1+2+3+4+5+6+7+8+9_递归_03

输出的结果:

PYTHON递进 python递归 1+2+3+4+5+6+7+8+9_递归实现_04

2.Python中字典的使用

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

   如下创建字典:

             

PYTHON递进 python递归 1+2+3+4+5+6+7+8+9_PYTHON递进_05

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

              

PYTHON递进 python递归 1+2+3+4+5+6+7+8+9_PYTHON递进_06

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

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

                   

PYTHON递进 python递归 1+2+3+4+5+6+7+8+9_PYTHON递进_07

               

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

                     

PYTHON递进 python递归 1+2+3+4+5+6+7+8+9_递归实现_08

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

                     

PYTHON递进 python递归 1+2+3+4+5+6+7+8+9_递归实现_09