递归recursion_韩顺平听课笔记
1.递归解决什么问题
什么是递归:
- 方法自己调用自己,每次调用传入不同的变量(控制结束)

递归能解决什么问题:
- 汉诺塔:五个盘,要想把最后一块盘放到c塔,需要先移动四个盘到b塔;要把四个盘移动到b塔,需要先将上三个盘移动到c塔;要将上三个盘移动到c塔,需要先把上两个盘移动到b塔;要将上两个盘移动到b塔,需要先将最上面一个盘移动到c塔;(递归)
- 递归解决栈解决的问题-代码更简洁

2.递归执行机制1,打印问题
方法递归调用内存分析:

3.递归执行机制2,打印问题进一步思考
修改第2小节中的代码,输出结果如何?

- 只输出n=2,if else是一个整体,进了if方法体内,就不能再进else
4.递归执行机制3,阶乘factorial问题
- 阶乘factorial实现代码

- 阶乘factorial内存分析

5.递归执行机制4,递归的重要规则,五点
递归的重要规则,五点:

6.递归斐波那契fibonacci
题目:给出一个整数n,求出第n位的斐波那契数是多少
- 斐波那契第n位数的值,等于前两位的和
- main

- 递归斐波那契fibonacci实现思路及代码

7.猴子吃桃
- 解决的要点在理清天数,和桃子数的关系,还有就是return

8.老鼠出迷宫1,使用数组创建迷宫地图,输出迷宫地图
- 使用数组创建迷宫地图

- 输出迷宫地图

9.老鼠出迷宫2
老鼠出迷宫思路分析:
- 找到返回true,否则返回false
- map数组中各个值的不同含义,3 走过,但是走不通是死路
- 找路策略,下,右,上,左
- 0 和 2都表示可以走,只需要一次判断即可


10.老鼠出迷宫3,修改找路策略,查看路径是否变化
修改找路策略,查看路径是否变化
- 上,右,下,左
- 走2时,判断为走不通(不走走过的路)
11.老鼠出迷宫4,测试回溯现象(这个回溯是在代码那里实现的)
测试回溯现象
- 思考:如何求出最短路径

12.汉诺塔

- 如果有多个盘,可以看成两个盘,最下面的盘和他上面的所有盘

13.八皇后
八皇后问题说明:

八皇后问题思路分析:


浙公网安备 33010602011771号