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连用打印出所有的键值对